C++のvectorの先頭に要素を挿入します
この投稿では、C++でvectorの先頭に要素を挿入する方法について説明します。
1.使用する std::vector::insert
関数
vectorに要素を挿入するための標準的な解決策は、 std::vector::insert
関数。要素を挿入する必要がある位置にイテレータを使用します。vectorの先頭に要素を挿入するには、vectorの最初の要素を指すイテレータを渡します。例えば、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <iostream> #include <vector> #include <iterator> int main() { std::vector<int> v = {2, 3, 4, 5}; int target = 1; //最初にターゲットを追加します v.insert(v.begin(), target); //vectorを出力 std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " ")); return 0; } |
出力:
1 2 3 4 5
2.使用する std::rotate
関数
または、vectorの最後に要素を追加してから、vectorを右に1桁回転させることもできます。このアプローチの一般的な実装は次のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <iostream> #include <vector> #include <algorithm> #include <iterator> int main() { std::vector<int> v = {2, 3, 4, 5}; int target = 1; //最初にターゲットを追加します v.push_back(target); std::rotate(v.rbegin(), v.rbegin() + 1, v.rend()); //vectorを出力 std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " ")); return 0; } |
出力:
1 2 3 4 5
3.使用する std::deque
コンテナの前面と端の両方から要素を追加および削除するには、 std::deque
。両端で拡張または縮小できる両端Queueを実装します。最初に要素を挿入するには、 push_front
のメンバー関数 std::deque
、以下に示すように:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <iostream> #include <deque> #include <iterator> int main() { std::deque<int> d = {2, 3, 4, 5}; int target = 1; //最初にターゲットを追加します d.push_front(target); //vectorを出力 std::copy(d.begin(), d.end(), std::ostream_iterator<int>(std::cout, " ")); return 0; } |
出力:
1 2 3 4 5
これで、C++のvectorの先頭に要素を挿入することができます。