c/c++ 插入迭代器实例讲解
标准库 插入迭代器 详解插入迭代器作用:copy等函数不能改变容器的大小,所以有时copy先容器是个空的容器,如果不使用插入迭代器,是无法使用copy等函数的。例如下面的代码就是错误的: list list copy(lst.cbegin(),lst.cend(),lst2.begin()); lst2是个空的容器,copy函数不能扩容容器lst2,所以会发生运行时错误。 用插入迭代器就可以很好的解决上面的问题list 三种插入迭代器迭代器 功能描述 back_inserter 创建一个使用push_back的迭代器 front_inserter 创建一个使用push_front的迭代器 inserter 创建一个使用insert的迭代器,元素插入到指定位置之前 inserter的特殊之处://假设it是有inserter生成的迭代器 *it = val;//其效果同下面二行代码一样 it = c.insert(it,val);//it指向新加入的元素 ++it;//递增it,使它指向原来的元素 例子: #include #include #include #include using namespace std; int main(){ //copy函数不会改变容器的大小,但是使用了插入迭代器后, //就会改变容器的大小了 /* list //运行错误,因为lst2是空list,copy函数不会增加容器的大小 //copy(lst.cbegin(),lst2.begin()); //结果:4,3,2,1 copy(lst.cbegin(),front_inserter(lst2)); //结果:1,2,3,4 copy(lst.cbegin(),lst3.begin())); for(auto const &s : lst2){ cout << s << " "; } cout << endl; for(auto const &s : lst3){ cout << s << " "; } cout << endl; */ //unique_copy 拷贝不重复的元素到新的容器 vector list sort(ivec.begin(),ivec.end()); unique_copy(ivec.cbegin(),ivec.cend(),back_inserter(lst)); for(auto const &s : lst){ cout << s << " "; } cout << endl; } c/c++ 学习互助QQ群:877684253本人微信:xiaoshitou5854(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |