ベクトルを簡単に追加
ベクトル操作の世界では、あるベクトルを別のベクトルの末尾に追加する必要がよくあります。要素を反復処理して個別に挿入するのは明白なアプローチのように思えるかもしれませんが、ここではより効率的で洗練されたソリューションを提供します。
次のコード スニペットを考えてみましょう:
vector<int> a; vector<int> b;
両方のベクトルに約 30 個の要素があると仮定すると、ベクトル b の内容をベクトル a の最後に追加するにはどうすればよいでしょうか?
ブルートフォースこの方法では、vector
代わりに、より効率的な方法を紹介します:
a.insert(a.end(), b.begin(), b.end());
代わりに、C 11 以降の場合は、次のバリアントを検討してください:
a.insert(std::end(a), std::begin(b), std::end(b));
これらのメソッドは、次の 3 つの引数を取る std::insert() 関数を利用します。挿入ポイントへの反復子、ソース範囲の先頭への反復子、ソース範囲の末尾への反復子です。適切なイテレータを提供することで、ベクトル b の内容をベクトル a にシームレスに追加できます。
コード スニペットの 2 番目のバリアントでは汎用イテレータが使用されており、配列 b にも適用できます。ただし、このアプローチには C 11 以降が必要です。
ユーザー定義型の場合、引数依存ルックアップ (ADL) を利用してコードをさらに簡略化できます。
using std::begin, std::end; a.insert(end(a), begin(b), end(b));
これらのエレガントなメソッドを使用すると、ソリューションを使用すると、ベクターの追加が楽な作業になり、コードの効率と保守性が大幅に向上します。
以上がC で 1 つのベクトルを別のベクトルに効率的に追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。