容器和算法2
Posted tianqizhi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了容器和算法2相关的知识,希望对你有一定的参考价值。
迭代器:
上一节我们的栗子虽然工作得很好并也使用了一个标准的容器(向量容器),但它还是有个小问题。就是在漏历向量里的各个元素时,我们仍把它视为一个C++数组来对待。
刚好我们的向量容器允许使用下表操作符来访问它的各个元素:names[x]。但是如果想改用另一种不提供此方法访问的容器(比如栈),我们就不得不对程序做很多修改才得以实现。
因为对容器里的各个元素进行遍历是一种十分常见的任务,所以应该有一种标准的方式来做这件事,对吧?
C++标准库提供的各种迭代器(iterator)就是这么来的。
迭代代器是一种功能非常有限却非常实用的函数,提供一些基本操作符:*、++、==、!=、=。迭代器是个所谓的智能指针,具有遍历复杂数据结构的能力。
因为迭代器的功能是如此的基本,所以标准库里的每一种容器都支持。
通过使用迭代器,当在程序里改用另一种容器的时候就用不着修改那么多的代码了。
每一种容器都必须提供自己的迭代器,事实上每种容器都将其迭代器以嵌套的方式定义于内部。因此各种送代器的接口相同,型号却不同,这就是所谓泛型程序设计的概念:所有操作行为都随用相同接口,虽然它们的具体实现不同。
修改vector.cpp,使用送代器。
以上是关于容器和算法2的主要内容,如果未能解决你的问题,请参考以下文章