web-dev-qa-db-ja.com

C ++ vector :: insert()を使用してベクターの最後に追加する

ベクトル要素の値に応じて、特定の場所でC++ STLベクトルに値を挿入する必要がある小さなコードを記述しています。これを実現するためにinsert()関数を使用しています。ベクトルの最後に新しい要素を追加したいときは、単にPush_back()を使用することができます。しかし、コードの見栄えを良くするために、insert()のみを使用します。これは、目的の挿入ポイントと挿入される値の後の要素を指す反復子を入力として受け取ります。引数として渡されたイテレータの値がv.end()である場合、vは私のベクトルですが、これはPush_back()と同じように機能しますか?

どうもありがとう!

53

a.Push_back(x)definedであり、(void)a.insert(a.end(),x)それをサポートするシーケンスコンテナ用。

ISO/IEC 14882:2003 23.1.1/12 [lib.sequence.reqmts]の表68を参照してください。

91
CB Bailey

挿入された要素にvoidinsertを返すかどうかにかかわらず、_Push_back_はiteratorを返すというわずかな違いがあります。

ところで、同じことを行うかどうかを確認する別の方法があります。次のコードをコンパイルします

_int main()
{
    std::vector<int const> v;
    v.Push_back(0);
    return 0;
}
_

コンパイラーは多くの迷惑なメッセージを出力し、読むだけで_Push_back_がinsertを呼び出します(そうでない場合は、v.insert(v.end(), 0)をコンパイルして、同じ挿入関数を呼び出すかどうかを確認してください。 ) 最終的には。

15
neuront