【c++】STL挿入反復器back_inserter() front_Inserter()inserter()およびコピーアルゴリズムcopy()
13557 ワード
まず、反復器を挿入するときのヘッダファイルの使用に注意してください.
汎用アルゴリズムは多く、ほとんどが定義されています:(copy()など)
本稿では,コピーアルゴリズムcopy()により,挿入反復器の使用を引き出すことを考え,このアルゴリズムを理解する必要がない場合は,本稿の後半を参照する.
コピーアルゴリズム:3つの反復器パラメータを受け入れ、最初の2つは入力の範囲を表し、3番目は目的のシーケンスの開始ビット位置を表します.このアルゴリズムは、入力範囲の要素を宛先シーケンスにコピーし、copyに入力される宛先シーケンスには、少なくとも入力シーケンスと同じくらいの要素が含まれます.
copy()
上のコードで指定したBのサイズはAと同じで、空ベクトルの場合は重大なエラーが発生します.
もし私たちが空の容器に汎用的な操作をしたいなら?まずコードを見てみましょう.
導入:反復の挿入
反復器の挿入:反復器アダプタで、コンテナを受信し、要素を挿入して反復器を返します.
要素を挿入する場所には、次の3つのタイプがあります.
反復の挿入
内容
back_inserter()
push_を使用する作成backの反復器
front_inserter()
push_を使用する作成frountの反復器
inserter()
insertを使用する反復器を作成します.この関数の最初のパラメータは、コンテナの2番目のパラメータが、指定したコンテナを指す反復器です.要素は反復器の前に挿入されます.
front_inserter()
inserter()
back_inserter()
include
汎用アルゴリズムは多く、ほとんどが定義されています:(copy()など)
#include
#include
本稿では,コピーアルゴリズムcopy()により,挿入反復器の使用を引き出すことを考え,このアルゴリズムを理解する必要がない場合は,本稿の後半を参照する.
コピーアルゴリズム:3つの反復器パラメータを受け入れ、最初の2つは入力の範囲を表し、3番目は目的のシーケンスの開始ビット位置を表します.このアルゴリズムは、入力範囲の要素を宛先シーケンスにコピーし、copyに入力される宛先シーケンスには、少なくとも入力シーケンスと同じくらいの要素が含まれます.
copy()
list<int> A{0,1,2,3};
list<int>B(4);
copy(A.begin(), A.end(),B.begin());
for (auto &b : B)
{
cout << b << endl;
}// 0,1,2,3
上のコードで指定したBのサイズはAと同じで、空ベクトルの場合は重大なエラーが発生します.
list<int> A{0,1,2,3};
list<int>B;//
copy(A.begin(), A.end(),B.begin());// :B 4
for (auto &b : B)
{
cout << b << endl;
}
もし私たちが空の容器に汎用的な操作をしたいなら?まずコードを見てみましょう.
list<int> A{0,1,2,3};
list<int>B;
copy(A.begin(), A.end(),back_inserter(B));// B push_back
for (auto &b : B)
{
cout << b << endl;
}// 0,1,2,3
導入:反復の挿入
反復器の挿入:反復器アダプタで、コンテナを受信し、要素を挿入して反復器を返します.
要素を挿入する場所には、次の3つのタイプがあります.
反復の挿入
内容
back_inserter()
push_を使用する作成backの反復器
front_inserter()
push_を使用する作成frountの反復器
inserter()
insertを使用する反復器を作成します.この関数の最初のパラメータは、コンテナの2番目のパラメータが、指定したコンテナを指す反復器です.要素は反復器の前に挿入されます.
front_inserter()
list<int> A{0,1,2,3};//list push_front, front_inserter() vecter
list<int>B;
copy(A.begin(), A.end(),front_inserter(B));
for (auto &b : B)
{
cout << b << endl;
}// 3,2,1,0
inserter()
list<int> A{0,1,2,3};
list<int>B;
copy(A.begin(), A.end(),inserter(B,B.begin()));
for (auto &b : B)
{
cout << b << endl;
}// 0,1,2,3
back_inserter()
list<int> A{0,1,2,3};
list<int>B;
copy(A.begin(), A.end(),front_inserter(B));
for (auto &b : B)
{
cout << b << endl;
}// 0,1,2,3