// stl/copy /**/ /*copy() function 执行复写(overwrite)动作,要求指出第一区间的 起点和终点,指出第二区间的起点,如果第二区间的大小不足,copy函数会覆写 end()后面的部分,可能会引起程序崩溃,或者更严重的后果。所以如果不用 insert iterators,那么就要求保证呢个目的有足够大的空间,下面程序用了两种方法container.resize(size());container(size())*/ #include < iostream > #include < vector > #include < list > #include < deque > #include < algorithm > using namespace std; int main() ... { list<int> coll1; vector<int> coll2; for(int i =1;i<9;++i) ...{ coll1.push_back(i); } /**//* ** use resize() */ coll2.resize(coll1.size()); // copy function copy(coll1.begin(),coll1.end(), // source 从 coll1.begin() 到coll1.end() coll2.begin()); // destination // use container(size()) deque<int> coll3(coll1.size()); copy(coll1.begin(),coll1.end(), // soruce coll3.begin()); vector<int>::iterator itr2; deque<int>::iterator itr3; for(itr2 = coll2.begin(); itr2 != coll2.end();++itr2) cout <<*itr2<<' '; cout <<endl; for(itr3 = coll3.begin(); itr3 != coll3.end();++itr3) cout <<*itr3<<' '; cout <<endl;} /**/ /*Output Result:1 2 3 4 5 6 7 81 2 3 4 5 6 7 8*/