来聊聊STL标准库(一)--- 迭代器 inerators(1)
迭代器是设计模式中的一种,具体的描述是,有这么一种方法,可以依次的访问某一个集合中的每一个元素,而且又不需要暴露集合内部元素的细节,那这种表达方式就是迭代。
迭代的思想后来被很多编程语言收录了,比如python
的 for ... in ...
语句实际上就是一个迭代器。当然,在c++11最新的标准中,也提供了对迭代的原生支持。
在我们编写STL程序时,迭代器是使用频率非常高的,比如下面这种用法你一定用过:
temlate<class T>struct MyIt{ typedef T new_type;};//然后函数声明这样弄template<class I>typename I::new_type func(I it){ ... }
认真看一下,OK,返回值类型变换也搞定了。
好了,这两个问题至少在技术上是可以解决的了,实际的设计中关于这两个还有个原生指针的问题,因为原生指针的返回类型没办法用内置类型声明来解决,具体解决方法大家有兴趣可以自己查查。