首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

问个back insterters的题目,该如何解决

2012-03-22 
问个back insterters的题目C/C++ code vectorint collback_insert_iteratorvectorint iter(coll)*

问个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一句有误。

热点排行