Подтвердить что ты не робот

Присоединение буфера char к вектору <char> в STL

Каков правильный (и эффективный) способ присоединения содержимого буфера C (char *) до конца std::vector<char>?

4b9b3361

Ответ 1

Когда у вас есть vector<char>, вы, вероятно, лучше всего вызываете метод vector<char>::insert:

std::vector<char> vec;

const char* values="values";
const char* end = values + strlen( values );

vec.insert( vec.end(), values, end );

Делегирование его на вектор предпочтительнее использовать back_inserter, потому что вектор затем может принять решение о его конечном размере. back_inserter будет только push_back, возможно, вызвав больше перераспределений.

Ответ 2

Я думаю, что правильным способом было бы

vec.insert(vec.end(),buf,buf+length);

или

std::copy(buf,buf+length,std::back_inserter(vec));

Изменить: Я переупорядочил два примера, так что это не то, что комментаторы ошибаются, это только я; -)

Ответ 3

Я не скомпилировал его, но это должно быть что-то вроде:

const char string1[] = "a string";
std::vector<char> vData;
vData.insert(vData.end(), string1, string1+strlen(string1));