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
}