问个back insterters的题目
- C/C++ code
vector<int> coll; back_insert_iterator<vector<int>> iter(coll); *iter=1; iter++; *iter=2; iter++; *iter=3; copy(coll.begin(),coll.end(),ostream_iterator<int>(cout," ")); cout<<endl; back_inserter(coll)=44; back_inserter(coll)=45; copy(coll.begin(),coll.end(),ostream_iterator<int>(cout," ")); cout<<endl; copy(coll.begin(),coll.end(),back_inserter(coll));//这里是不是造成,出现随机数的原因???? copy(coll.begin(),coll.end(),ostream_iterator<int>(cout," ")); cout<<endl;运行结果为:1 2 31 2 3 44 451 2 3 44 45 1 2 -572662307 -572662307 -572662307请按任意键继续. . .copy(coll.begin(),coll.end(),back_inserter(coll)); 调用之前,coll的尺寸不变,back_inserter后,coll尺寸加倍。问题2: copy这个函数, copy目前我知道的用法为:(1) copy(coll.begin(),coll.end(),ostream_iterator<int>(cout," ")); 第三个参数是一个类模板作为仿函数的调用(2) copy(coll.begin(),coll.end(),back_inserter(coll)); 这是看书上的用法,第三个参数是一个函数的调用,它的返回值,back_insert_iterator<vector<int>>(当然,实例化了)不少支持仿函数的函数,比如:sort(参数1,参数2,参数3),第三个参数可以传仿函数,也可以传函数指针。back_insert_iterator<vector<int>>不是函数指针,也不是仿函数,怎么也可以这样是使用啊??
[解决办法]
指针空间 用迭代器代替coll.begin和coll.end
[解决办法]
back insert iterator 是功能型迭代器,他的功能是插入元素。这个你单步跟踪就可以懂。但是Vector每插入一次之后之前的迭代器都会无效,所以你Copy一句有误。