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 }