list<int> coll1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
vector<int> coll2;
//错误,该算法执行的是覆写动作,而非安插动作,所有目标区间必须有足够的元素被覆写;
copy(coll1.cbegin(), coll1.cend(), // source
coll2.begin()); // destination
vector<int> coll2;
coll2.resize(coll.size())
//正确 copy(coll1.cbegin(), coll1.cend(), // source coll2.begin()); // destination
#include <algorithm>
#include <list>
#include <vector>
#include <deque>
using namespace std;
int main()
{
list<int> coll1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
vector<int> coll2;
//改变coll2元素个数,使其有足够空间被覆写
coll2.resize(coll1.size());
copy(coll1.cbegin(), coll1.cend(), // source
coll2.begin()); // destination
deque<int> coll3(coll1.size());
copy(coll1.cbegin(), coll1.cend(), // source
coll3.begin()); // destination
}
#include <algorithm>
#include <iterator>
#include <list>
#include <vector>
#include <deque>
#include <set>
#include <iostream>
using namespace std;
int main()
{
list<int> coll1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
vector<int> coll2;
//调用push_back安插于容器最末端,当然只有在提供push_back的容器中才能使用back_inserter()
copy(coll1.begin(), coll1.end(), // source
back_inserter(coll2)); // destination
deque<int> coll3;
//内部调用push_front(),将元素安插于最前端。
copy(coll1.cbegin(), coll1.cend(), // source
front_inserter(coll3)); // destination
set<int> coll4;
copy(coll1.cbegin(), coll1.cend(), // source
inserter(coll4, coll4.begin())); // destination
}