STL之insert_iterator
来源:互联网 发布:上海plc编程培训 编辑:程序博客网 时间:2024/06/10 03:10
insert_iterator功能:指定要插入容器的位置,然后向插入点后插入元素。如ListA{1,2,3,4,5,6,7,8,9} 。插入点位置在5处。要插入的链表为ListB{555,666,777}
,则结果为{1,2,3,4,5,555,666,777,6,7,8,9}。
见以下例子
//advance(i, n) 指定迭代器i前进n步 相当于i=i+n//http://www.cplusplus.com/reference/iterator/advance/#include <iostream>#include <iterator>#include <list>using namespace std;void TestAdvance(){ list<int> mylist; for (int i=0; i<10; i++) mylist.push_back (i*10); list<int>::iterator it = mylist.begin(); advance (it,5); cout << "The sixth element in mylist is: " << *it << endl;}//http://www.cplusplus.com/reference/iterator/inserter///输出A链表到B链表中 输出的位置由B链表迭代器的位置指定//this function generates an insert iterator for a container.//template<class InputIterator, class OutputIterator> // OutputIterator copy ( InputIterator first, InputIterator last, OutputIterator result )//{// while (first!=last) *result++ = *first++;// return result;//}void TestCopyOutputIterator(){ list<int> firstlist, secondlist; for (int i=1; i<=5; i++) { firstlist.push_back(i); secondlist.push_back(i*10); } list<int>::iterator it; it = firstlist.begin(); advance (it,3); copy (secondlist.begin(),secondlist.end(),inserter(firstlist,it)); for ( it = firstlist.begin(); it!= firstlist.end(); ++it ) cout << *it << " "; cout << endl;}/*template <class Container> class insert_iterator : public iterator<output_iterator_tag,void,void,void,void>{protected: Container* container; typename Container::iterator iter;public: typedef Container container_type; explicit insert_iterator (Container& x, typename Container::iterator i) : container(&x), iter(i) {} insert_iterator<Container>& operator= (typename Container::const_reference value) { iter=container->insert(iter,value); ++iter; return *this; } insert_iterator<Container>& operator* () { return *this; } insert_iterator<Container>& operator++ () { return *this; } insert_iterator<Container> operator++ (int) { return *this; }};*///还可以直接使用insert_iterator迭代器void TestCopy(){ list<int> firstlist, secondlist; for (int i=1; i<=5; i++) { firstlist.push_back(i); secondlist.push_back(i*10); } list<int>::iterator it; it = firstlist.begin(); advance (it,3); insert_iterator< list<int> > insert_it (firstlist,it); copy (secondlist.begin(),secondlist.end(),insert_it); for ( it = firstlist.begin(); it!= firstlist.end(); ++it ) cout << *it << " "; cout << endl;}int main () {TestAdvance();TestCopyOutputIterator();TestCopy(); return 0;}
结果
The sixth element in mylist is: 501 2 3 10 20 30 40 50 4 51 2 3 10 20 30 40 50 4 5
- STL之insert_iterator
- insert_iterator 类的简单使用
- 【STL】STL之map
- 【STL】STL之set
- 【STL】STL之pair
- STL 5: STL之迭代器
- 【STL】STL容器之vector
- 【STL】STL容器之map
- 【STL】STL之string类
- STL 之 Introducntion
- STL 之 Container Concepts
- STL 之sort使用
- STL学习之(一)
- STL学习之(二)
- STL之学习笔记
- STL之xhash
- 学习STL之二
- STL算法之二
- 序言
- 内存泄露——结构体成员指针未初始化
- Java基础复习
- 记录一下八款开源 Android 游戏引擎
- UVa 10034 Freckles 解答
- STL之insert_iterator
- WPF登录窗体
- 数据库建表的十四个技巧
- JavaCookbook-3.字符串与4.正则表达式
- Linux内核调试技术
- 程序员学习之路
- 获取sqlserver数据库中所有库、表、字段名的方法
- Linux之Vim使用
- 协调多个对象之间的交互——中介者模式(一)