web-dev-qa-db-ja.com

ベクターの先頭に要素を挿入するにはどうすればよいですか?

私はコードを書くのが初心者ですが、少し助けが必要です。std::vectorの先頭に値を挿入する必要があります。たとえば、このベクトルの他の値をさらに位置にプッシュする必要があります。たとえば、最初に追加されたものベクトルと値の位置1から2、2から3への移動など。

11

std :: vector :: insert 関数を受け入れ 最初の要素へのイテレータ をターゲット位置として使用します(要素を挿入する前のイテレータ):

#include <vector>

int main() {
    std::vector<int> v{ 1, 2, 3, 4, 5 };
    v.insert(v.begin(), 6);
}

編集:コメントで指摘されているように、 append 要素を使用して rotation を実行することもできます=右側:

#include <vector>
#include <algorithm>

int main() {
    std::vector<int> v{ 1, 2, 3, 4, 5 };
    v.Push_back(6);
    std::rotate(v.rbegin(), v.rbegin() + 1, v.rend());
}
23
Ron

std::dequeの使用を検討してください。 std::vectorと同様に機能しますが、前面と終了の両方でアイテムを追加および削除できます。

これは、内部ストレージを小さなブロックに分割することによって行われます。あなたはまだ良い検索速度のランダムアクセス反復子を持っています。

コンテナが小さい場合はstd::vectorのアプローチを使用しても問題ありませんが、大量のデータを格納している場合は、前面での挿入/削除のstd::dequesのパフォーマンスがはるかに優れています。

5
super