ベクトルに何かを追加するには、insert()
メンバー関数を使用します。
vec.insert(vec.end(), arr, arr+len);
もちろん、assign()
おそらくやりたいことに近いもあります。
vec.assign(arr, arr+len);
しかし、あなたの質問を読んで、すぐにベクトルに読み込むことができるのに、その内容をベクトルにコピーするためだけに最初に C 配列に読み込むのはなぜだろうかと思いました。は、そのデータを 1 つの連続したメモリ ブロックに保持するstd::vector<>
必要があり、最初の要素のアドレスを取得することでこのブロックにアクセスできます。ベクトルに十分なスペースがあることを確認してください。
std::size_t my_read(char* buffer, std::size_t buffer_size);
vec.resize( appropriate_length );
vec.resize( my_read_func(&vec[0], vec.size()) );
の代わりに&vec[0]
、最初の要素のアドレスを取得することもできます&*vec.begin()
。ただし、どちらの方法でも、 vector に少なくとも 1 つの要素があることを必ず確認する必要があることに注意してください。これをチェックするために 2 つのメソッドのいずれも必要ありません (ただし、デバッグ ビルドの実装ではチェックする必要があります) 。これに失敗すると、どちらも恐ろしい未定義の動作を呼び出します。