C++ 自定义迭代器
来源:互联网 发布:vb打印字符串 编辑:程序博客网 时间:2024/06/05 18:36
程序员可以根据需要定义自己的迭代器。MyIterator(这个代码还没看懂)
//print.h#include<iostream>#include<string>template <typename T>inline void PRINT_ELEMENTS(const T& coll, const std::string& optstr=""){std::cout<<optstr;std::cout<<std::endl;}
//assoiter.h#include<iterator>template <typename Container>class asso_insert_iterator : public std::iterator<std::output_iterator_tag, typename Container::value_type> {protected:Container& container;public:explicit asso_insert_iterator(Container& c):container(c){}asso_insert_iterator<Container>& operator=(const typename Container::value_type& value){container.insert(value);return *this;}asso_insert_iterator<Container>& operator*(){return *this;}asso_insert_iterator<Container>& operator++(int){return *this;}};template <typename Container>inline asso_insert_iterator<Container> asso_inserter(Container& c){return asso_insert_iterator<Container>(c);}
//test.cpp#pragma warning(disable:4786)#include<iostream>#include<set>#include<vector>#include<algorithm>#include "print.h"#include "assoiter.h"int main(){std::set<int> coll;asso_insert_iterator<std::set<int> > iter(coll);*iter = 1;iter++;*iter = 2;iter++;*iter = 3;std::copy(coll.begin(), coll.end(), std::ostream_iterator<int>(std::cout, " "));std::cout<<std::endl;asso_inserter(coll) = 44;asso_inserter(coll) = 55;std::copy(coll.begin(), coll.end(), std::ostream_iterator<int>(std::cout, " "));std::cout<<std::endl;std::vector<int> vals;vals.push_back(33);vals.push_back(67);vals.push_back(-4);vals.push_back(13);vals.push_back(5);vals.push_back(2);std::copy(vals.begin(), vals.end(), std::ostream_iterator<int>(std::cout, " "));std::cout<<std::endl;return 0;}
0 0
- c.sharp自定义事件
- C#-控件-自定义事件
- C#List自定义排序
- (C#)--返回自定义数据类型
- objective-c 自定义类
- c语言自定义堆栈
- C自定义管道
- c语言-自定义数据类型
- 登山-C#-自定义特性
- [C#]自定义消息收发
- C语言typedef自定义
- c#:自定义Attribute
- C#:自定义事件
- C 自定义输入函数
- C--自定义调试信息
- C++__自定义数据类型
- Objective-C 自定义UICollectionView
- C 自定义字符串输出
- Spring学习
- Web前端开发十日谈
- struts2入门
- Linux之会话浅析
- 09____java线程同步工具类之信号灯(Semaphore)
- C++ 自定义迭代器
- 写给Python初学者的设计模式入门
- C#生成Guid
- Integer和BigDecimal转换
- NBUT 1457 分块法
- UVa 10066 - The Twin Towers
- iPhone消息推送机制实现与探讨
- UITableView 滚动流程性优化
- Java2的集合框架主要的三种:List、Set和Map