使用者自定义User-Defined的迭代器
来源:互联网 发布:javascript 雪峰 编辑:程序博客网 时间:2024/05/03 21:36
以下实例说明如何编写自定义的迭代器。这事一个关联式容器的Insert迭代器,虾米那是其实作代码
#include<iterator>using namespace std;//template class for insert iterator for associative containerstemplate <class Container>class asso_insert_iterator:public iterator<output_iterator_tag, void, void ,void, void>{protected:Container& container; //contianer in which elements are insertedpublic://constructorexplicit asso_insert_iterator (Container&c) : container(c){}//assignment operator//inserts a value into the containerasso_insert_iterator<Container>& operator= (const typename Container::value_type& value){container.insert(value);return *this;}//dereferencing is a no-op that returns the iterator itselfasso_insert_iterator<Container>& operator*(){return *this;}//increment operation is a no-op that returns the iterator itselfasso_insert_iterator<Container>& operator++(){return *this;}asso_insert_iterator<Container>& operator++(int){return *this;}};//convenience function to create the insertertemplate <class Container>inline asso_insert_iterator<Container> asso_inserter(Container& c){return asso_insert_iterator<Container>(c);}
这一Insert迭代器定义完成后,还可以提供一个函数asso_inserter(),用来简化迭代器的生成动作和初始化动作。以下程序便是使用这样一个Insert对着一个set安插一些元素:
#include<iostream>#include<iterator>#include<set>#include<algorithm>#include"assoiter.h"#include"print.h"using namespace std;int main(){set<int> coll;//create inserter for coll//inconvenient wayasso_insert_iterator<set<int> > iter(coll);//insert elements with the usual iterator interface*iter = 1;iter++;*iter = 2;iter++;*iter = 3;PRINT_ELEMENTS(coll);//create inserter for coll and insert elements//convenient wayasso_inserter(coll) = 44;asso_inserter(coll) = 55;PRINT_ELEMENTS(coll); //use inserter with an algorithmint vals[] ={33, 67, -4, 13, 5, 2};copy(vals, vals+(sizeof(vals)/sizeof(vals[0])), asso_inserter(coll));PRINT_ELEMENTS(coll);return 0;}
- 使用者自定义User-Defined的迭代器
- 用户自定义类型(User-defined Type)参数的传递
- DB2基于JAVA的自定义函数(user-defined-function)示例
- hive的UDF 函数(User-Defined-Function)
- C++用户自定义转换(User-Defined Conversion)(摘自cnblogs)
- Mysql User-Defined Variables 用户自定义变量 SET or DECLARE
- MySql基础-自定义函数(user-defined function,UDF)
- PL/SQL 自定义子类型(User-Defined Subtype)
- C++用户自定义转换(User-Defined Conversion)
- AWK学习笔记-2.3User-Defined Functions自定义函数
- C++用户自定义转换(User-Defined Conversion)
- 13.4 User-defined conversions
- User-defined conversions
- User Defined Window Messages
- [PHP] User Defined Extension
- UDF (User-defined Function)
- python User-defined Exceptions
- User Defined Functions
- MFC多文档框架详细介绍
- ubuntu下安装mysql
- spring自定义scope
- Bundle savedInstanceState的作用
- internet中网络终端如何访问tinyos节点
- 使用者自定义User-Defined的迭代器
- 外部的.sql文件导入Navicat
- android 增量升级
- c面试题大全(不断更新)
- vmware linux不能联网问题
- Android 4.0 Launcher2源码分析——导入eclipse进行调试
- android 搜索框过滤 listview
- 汇编语言入门——编辑、编译、链接、运行、调试程序【影子笨蛋苦比的摸索日记】
- 有关在MFC中打开控制台的办法