Не обращая внимания на то, что вы назвали их одинаковыми, и притворяясь, что вы этого не сделали, вам нужно сначала выделить место для вашего вектора:
char arr[5];
memcpy(arr, pszData, 4);
arr[4] = 0;
std::vector<char> vec(5); // contains five usable elements
std::copy(arr, arr + 5, vec.begin());
// ^^^ should be + 5, not + 4, to get null terminator
Или вы можете использовать std::back_inserter
:
char arr[5];
memcpy(arr, pszData, 4);
arr[4] = 0;
std::vector<char> vec; // contains zero usable elements
vec.reserve(5); // reserve space ahead of time
std::copy(arr, arr + 5, std::back_inserter(vec));
Это будет push_back
каждый скопированный элемент.Тем не менее, почему бы не пропустить посредника?
std::vector<char> vec(5);
std::copy(pszData, pszData + 4, vec.begin());
// vec[4] already initialized to zero