「std::vector::insert」の版間の差分

提供: C++入門
移動: 案内検索
(関連項目)
行1: 行1:
[[std::vector::insert]] とは、[[std::vector]]に要素を追加するメンバ関数の1つです。他の方法は、[[std::vector::push_back]]です。[[std::vector::insert]]を利用して、vectorを連結することもできます。
+
[[std::vector::insert]] とは、[[std::vector]]に要素を追加するメンバ関数の1つです。他の方法は、[[std::vector::push_back]]です。[[std::vector::insert]]を利用して、vectorを連結することもできます。[[std::vector::insert]]は、任意のポジション(イテレータ)に要素を追加できます。
  
 
'''読み方'''
 
'''読み方'''
行6: 行6:
  
 
== 概要 ==
 
== 概要 ==
 +
[[std::vector]]のinsert では、以下のいずれかの動作ができます。
 +
* 値をポジション(イテレータ)の直前に追加し、追加した要素を指すイテレータを返す。
 +
* 値を「指定された個数」作成し、ポジションの直前に追加する。
 +
* 開始から終了までの要素をポジションの直前に追加する。
  
 +
== std::vector::insertの例 ==
 +
=== 先頭に要素を1つ追加する ===
 +
これは、先頭に値を追加する例です。
 +
<syntaxhighlight lang="cpp">
 +
it = v.begin();        // 先頭のイテレータを取得
 +
it = v.insert(it,200);  //先頭に200を追加
 +
</syntaxhighlight>
 +
 +
=== 先頭に同じ要素を2つ追加する ===
 +
これは、先頭に300を2つ追加する例です。
 +
<syntaxhighlight lang="cpp">
 +
v.insert(it,2,300);    // 先頭に300,300を追加
 +
</syntaxhighlight>
 +
 +
=== vectorを連結する ===
 +
vectorを連結(結合)する例です。v1の後ろにv2を連結します。
 +
<syntaxhighlight lang="cpp">
 +
vector<int> v1{1,2,3}, v2{4,5,6};
 +
v1.insert(v1.end(), v2.begin(), v2.end());
 +
</syntaxhighlight>
 +
 +
vectorを連結(結合)する例です。vの前に、v2が追加されます。
 +
<syntaxhighlight lang="cpp">
 +
vector<int> v2{503,502,501};
 +
v.insert(v.begin(), v2.begin(), v2.end()); // 先頭にv2を追加
 +
</syntaxhighlight>
 +
 +
== プロトタイプ ==
 
<syntaxhighlight lang="cpp">
 
<syntaxhighlight lang="cpp">
 
// single element (1)
 
// single element (1)
行71: 行103:
 
         vector<int> v1{1,2,3}, v2{4,5,6};
 
         vector<int> v1{1,2,3}, v2{4,5,6};
  
        v1=v1+v2;
 
 
         v1.insert(v1.end(), v2.begin(), v2.end());
 
         v1.insert(v1.end(), v2.begin(), v2.end());
 
         for(auto i: v1) {
 
         for(auto i: v1) {
行97: 行128:
 
* [[auto]]
 
* [[auto]]
 
* [[C++11]]
 
* [[C++11]]
<!-- vim: filetype=mediawiki -->
+
<!-- vim: filetype=mediawiki
 +
-->

2014年7月5日 (土) 11:52時点における版

std::vector::insert とは、std::vectorに要素を追加するメンバ関数の1つです。他の方法は、std::vector::push_backです。std::vector::insertを利用して、vectorを連結することもできます。std::vector::insertは、任意のポジション(イテレータ)に要素を追加できます。

読み方

std::vector::insert
えすてぃーでぃー べくたー いんさーと

概要

std::vectorのinsert では、以下のいずれかの動作ができます。

  • 値をポジション(イテレータ)の直前に追加し、追加した要素を指すイテレータを返す。
  • 値を「指定された個数」作成し、ポジションの直前に追加する。
  • 開始から終了までの要素をポジションの直前に追加する。

std::vector::insertの例

先頭に要素を1つ追加する

これは、先頭に値を追加する例です。

it = v.begin();         // 先頭のイテレータを取得
it = v.insert(it,200);  //先頭に200を追加

先頭に同じ要素を2つ追加する

これは、先頭に300を2つ追加する例です。

v.insert(it,2,300);     // 先頭に300,300を追加

vectorを連結する

vectorを連結(結合)する例です。v1の後ろにv2を連結します。

vector<int> v1{1,2,3}, v2{4,5,6};
v1.insert(v1.end(), v2.begin(), v2.end());

vectorを連結(結合)する例です。vの前に、v2が追加されます。

vector<int> v2{503,502,501};
v.insert(v.begin(), v2.begin(), v2.end()); // 先頭にv2を追加

プロトタイプ

// single element (1)	
iterator insert (const_iterator position, const value_type& val);
 
// fill (2)	
iterator insert (const_iterator position, size_type n, const value_type& val);
 
// range (3)	
template <class InputIterator>
iterator insert (const_iterator position, InputIterator first, InputIterator last);
 
// move (4)	
iterator insert (const_iterator position, value_type&& val);
 
// initializer list (5)	
iterator insert (const_iterator position, initializer_list<value_type> il);

vector_insert1.cpp の例

ソースコード vector_insert1.cpp

#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char const* argv[])
{
        vector<int> v(3, 100); // 100,100,100
        vector<int>::iterator it;
 
        it = v.begin();         // 先頭のイテレータを取得
        it = v.insert(it,200);  //先頭に200を追加
        v.insert(it,2,300);     // 先頭に300,300を追加
 
        vector<int> v2{503,502,501};
        v.insert(v.begin(), v2.begin(), v2.end()); // 先頭にv2を追加
 
        for(auto i: v) {
                cout << i << " ";
        }
        cout << endl;
        return 0;
}

コンパイル

g++49 -std=c++11 -I/usr/local/lib/gcc49/include/c++/ \
-Wl,-rpath=/usr/local/lib/gcc49  vector_insert1.cpp -o vector_insert1

実行例

% ./vector_insert1
503 502 501 300 300 200 100 100 100

vectorにvectorを連結する例

ソースコード vector_add_vector1.cpp

#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char const* argv[])
{
        vector<int> v1{1,2,3}, v2{4,5,6};
 
        v1.insert(v1.end(), v2.begin(), v2.end());
        for(auto i: v1) {
                cout << i << " ";
        }
        cout << endl;
        return 0;
}

コンパイル

g++49 -std=c++11 -I/usr/local/lib/gcc49/include/c++/ \
-Wl,-rpath=/usr/local/lib/gcc49  vector_add_vector1.cpp -o vector_add_vector1

実行例

% ./vector_add_vector1
1 2 3 4 5 6

関連項目