「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.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