Каков правильный (и эффективный) способ присоединения содержимого буфера C (char *
) до конца std::vector<char>
?
Присоединение буфера char к вектору <char> в STL
Ответ 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));