I think std::copy would have pretty good performance, especially with the one note I see on cppreference.com
In practice, implementations of std::copy avoid multiple assignments and use bulk copy functions such as std::memmove if the value type is TriviallyCopyable
If the types require conversion then I would do this:
class MemRef
{
public:
MemRef(char * astr) : ptr_( astr), size_( strlen( astr)) { }
...
} ;
vecMem.insert(vecMem.end(), cstrVec.begin(), cstrVec.end()) ;
This allows vecMem to figure out how much space it needs to reserve in one go.