容器和算法2

Posted tianqizhi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了容器和算法2相关的知识,希望对你有一定的参考价值。

迭代器:

  上一节我们的栗子虽然工作得很好并也使用了一个标准的容器(向量容器),但它还是有个小问题。就是在漏历向量里的各个元素时,我们仍把它视为一个C++数组来对待。
  刚好我们的向量容器允许使用下表操作符来访问它的各个元素:names[x]。但是如果想改用另一种不提供此方法访问的容器(比如栈),我们就不得不对程序做很多修改才得以实现。

  因为对容器里的各个元素进行遍历是一种十分常见的任务,所以应该有一种标准的方式来做这件事,对吧?
  C++标准库提供的各种迭代器(iterator)就是这么来的。
  迭代代器是一种功能非常有限却非常实用的函数,提供一些基本操作符:*、++、==、!=、=。迭代器是个所谓的智能指针,具有遍历复杂数据结构的能力。

  因为迭代器的功能是如此的基本,所以标准库里的每一种容器都支持。
  通过使用迭代器,当在程序里改用另一种容器的时候就用不着修改那么多的代码了。
  每一种容器都必须提供自己的迭代器,事实上每种容器都将其迭代器以嵌套的方式定义于内部。因此各种送代器的接口相同,型号却不同,这就是所谓泛型程序设计的概念:所有操作行为都随用相同接口,虽然它们的具体实现不同。

  修改vector.cpp,使用送代器。



以上是关于容器和算法2的主要内容,如果未能解决你的问题,请参考以下文章

分类算法 - 朴素贝叶斯算法

stl_container容器和std_algorithm算法相同的函数

(超详细)算法学习:STL和基本数据结构

6.5-数据结构&算法-标准模板STL/STL容器/向量

从容器中获取前 5 个算法?

STL常用算法的使用与实现举例