copy
シーケンスをコピーするには copy を利用します。
コピー先要素の確保に注意
コピーを行う時にはコピー先のメモリを確保しておく必要があります。次の例では v から v2 に内容をコピーしていますが、 v2 を v のサイズ v.size() で初期化していることに注意してください。
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<char> v;
vector<char>::iterator i;
v.push_back('a');
v.push_back('c');
v.push_back('b');
vector<char> v2(v.size());
copy(v.begin(), v.end(), v2.begin());
i = v2.begin();
while (i != v2.end()) {
cout << *i << endl;
++i;
}
return 0;
}
次のようなエラーが出たらメモリの確保が出来ているか確認してください。
./a.out
Segmentation fault
特定のサイズで初期化しない場合は次の例のように、back_inserter を使用することもできます。
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<char> v;
vector<char>::iterator i;
v.push_back('a');
v.push_back('c');
v.push_back('b');
vector<char> v2;
copy(v.begin(), v.end(), back_inserter(v2));
i = v2.begin();
while (i != v2.end()) {
cout << *i << endl;
++i;
}
return 0;
}
実行結果は次の通りです。
./a.out
a
c
b