//
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 8
1 2 3 4 5 6 7 8
*/

631

被折叠的 条评论
为什么被折叠?



