多くの言語とフレームワークは「バイト配列」型を提供していますが、C++ 標準ライブラリは提供していません。中サイズの1、サイズ変更可能なバイト配列に使用するのに適した型と、その型を効率的に使用するにはどうすればよいですか? (特に: 割り当て、パラメーターとしての受け渡し、および破棄)
1: 中規模とは、100 MB 未満を意味します。
vector<char>
あなたの目的には問題ないはずです。コピーを避けるために共有バージョンが必要な場合は、次を使用できます。
typedef shared_ptr<vector<uint8_t>> ByteArray;
コンパイル時のサイズがわかっている場合は、array
スペース効率がわずかに高い方を使用できます。
またstring
、ベクトルよりも適切である場合とそうでない場合がある null 文字を処理できます。
一部の拡張実装にはロープ実装がありますhttp://en.wikipedia.org/wiki/Rope、http://www.aoc.nrao.edu/php/tjuerges/ALMA/STL/html-3.4.6/rope.html、それはより適切かもしれません。
少なくとも比較的大きなバッファーの場合は、代わりに unique_ptr を使用するパフォーマンス上の理由があります。詳細については、 https://stackoverflow.com/a/35798248/1992615を参照してください。