[英]Attaching char buffer to vector<char> in STL
將C緩沖區( char *
)的內容附加到std::vector<char>
的末尾的正確(有效)方法是什么?
當你有一個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
因為向量可以決定它的最終大小。 back_inserter
只會push_back
,可能導致更多的重新分配。
我認為正確的方法是
vec.insert(vec.end(),buf,buf+length);
要么
std::copy(buf,buf+length,std::back_inserter(vec));
編輯:我重新排序了兩個例子,所以不是評論者錯了,這只是我;-)
我沒有編譯它,但它應該是這樣的:
const char string1[] = "a string";
std::vector<char> vData;
vData.insert(vData.end(), string1, string1+strlen(string1));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.