std::vector<char>
の末尾にCバッファの内容(char *
)を添付する正しい方法はありますか?STLのベクトル<char>にcharバッファを添付
12
A
答えて
30
あなたが利用可能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
となり、再割り当てが増える可能性があります。
4
私は適切な方法が
vec.insert(vec.end(),buf,buf+length);
または
std::copy(buf,buf+length,std::back_inserter(vec));
に編集だと思う:私は2つの例を並べ替え、それはそれは私だけだ、コメンターが間違っているということではありません;-)
1
私はそれをコンパイルしていないが、それはのようなものでなければなりません:
const char string1[] = "a string";
std::vector<char> vData;
vData.insert(vData.end(), string1, string1+strlen(string1));
関連する問題
- 1. ベクトル<char>をポインタchar *
- 2. のChar * ::ベクトル<char>
- 3. ベクトル<string>をベクトルに変換する方法<char*>
- 4. 反復::ベクトル<std :: vector <char>>?
- 5. コピーのstd :: charへのベクトル<uint8_t> *
- 6. コンバートのstd :: charへのベクトル<T> *
- 7. キャストSTL :: STLへのポインタを含むベクトル::ベクトルは
- 8. ベクトルをソートする方法<char*>?
- 9. フィードのstd ::ベクトル<unsigned char型>
- 10. STLベクトル予備
- 11. C++ STLベクトル
- 12. STLベクトルとスレッドセーフ
- 13. 読むデータ::ベクトル<unsigned char型>
- 14. STLベクトルの中にC++ STLベクトルがあるかどうかを調べる
- 15. STL(リストのベクトル、隣接リスト)のベクトル - C++
- 16. STLベクトルを分割する
- 17. STLベクトルへの挿入
- 18. のOpenMPおよびSTLベクトル
- 19. null以外の終了ベクトルを<char>に変換する
- 20. C++、ベクトル<char>をofstreamスキップの空白に書き込む
- 21. TCPバッファにベクトル<int32_t>をシリアル化していますか?
- 22. マーシャリング - 変換のstd ::文字列のベクトル<char> ^逆に
- 23. ファイルをベクトルにロードする<unsigned char>
- 24. ベクトル<unsigned char>をバイト[]に変換できますか?
- 25. ソケットにベクトルを送る方法<unsigned char>
- 26. Visual C++ベクトル<char>はリストボックスに数値を入れます
- 27. STLベクトル割り当て
- 28. STLベクトル割り当て
- 29. STLベクトル対マップ消去
- 30. ベクトルのC++ replace_ifをSTLの構造体
ベクトルはイテレータがランダムアクセスイテレータであることを推測して事前に予約して、再割り振りを保存することができるため、最初のものも正しくあります。 – sbi
真。私はそれから多くを期待していないだろう。とにかく、ローマには複数の道があります;-) –
多くの現代的な実装が単純なケースを最適化するので、私は実際には2番目の方が良いと思います。 'vector <>'はシンプルなテンプレートで、 'char *'は単純なイテレータで 'char'はシンプルなPODです。 – MSalters