と関数vector
の違いを知りたい。push_back
insert
構造的な違いはありますか?
本当に大きなパフォーマンスの違いはありますか?
最大の違いはそれらの機能です。push_back
常に新しい要素をの最後に配置し、新しい要素の位置vector
をinsert
選択できるようにします。これはパフォーマンスに影響します。vector
割り当てられたメモリが少なすぎるため、要素の長さを増やす必要がある場合にのみ、要素がメモリ内で移動されます。一方insert
、新しい要素の選択された位置の後にすべての要素を強制的に移動します。あなたは単にそれのための場所を作る必要があります。insert
これが、多くの場合、より効率が悪い可能性がある理由ですpush_back
。
関数にはさまざまな目的があります。vector::insert
の指定した位置にオブジェクトを挿入できますが、vector
オブジェクトvector::push_back
を最後に貼り付けるだけです。次の例を参照してください。
using namespace std;
vector<int> v = {1, 3, 4};
v.insert(next(begin(v)), 2);
v.push_back(5);
// v now contains {1, 2, 3, 4, 5}
を使用insert
して、と同じジョブを実行push_back
できますv.insert(v.end(), value)
。