2014-07-07

3.1 指针的算术运算(The Arithmetic of Pointer)

  新需求1

  新需求2

  新需求3

3.2 了解 Iterators(泛性指针)

3.3 所有容器的共通操作

3.6 如何设计一个泛性算法

  Function Objects

  Function Object Adapters

 

 

Standard Template Library(STL)主要由两种组件构成:

  • 一是容器(container),包括vector,list,set,map等类;
  • 另一种是用以操作这些容器类的所谓泛型算法(generic algorithm),包括find(),sort(),replace(),merge()等等。

容器概述

vector和list这两个容器是所谓的序列式容器(sequential container)。序列式容器会依次维护第一个元素、第二个元素......直到最后一个元素。我们在序列式容器上主要进行所谓的迭代(iterate)操作。

map和set这两种容器属于关联式容器(associative container)。关联式容器可以让我们快速寻找容器中的元素。

所谓map乃是一对对的key/value组合。key用于搜索,value要存储或取出数据。

所谓set,其中仅含有key。我们对它进行查询操作,为的是要判断某值是否存在其中。例如:我们想要建立一组索引表,用来记录新闻、故事中出现的字,我们希望一些中性字眼,如the,an,but排除掉。我们可以把这些中性字放在exclude_word的一个set中,每次放入某个字到索引表之前,查询一下exclude_word。若有,忽略;反之,加入。

泛型算法概述

所谓泛型算法,提供了许多可施行于容器及数组型别上的操作行为。这些算法之所以称为泛型(generic),因为它们和它们所要操作的元素型别无关。

泛型算法是通过function template技术,达成“与操作对象之型别相互独立”的目的。

3.1 指针的算术运算(The Arithmetic of Pointer)


 返回

假设我们需要一个函数find()要完成以下任务。给定一个存储整数的vector,以及一个整数值。如果此值存在于vector内,返回一个指针指向该值;反之,返回0。

1 int *find(const vector<int>&vec, int value)
2 {
3     for(int ix=0;ix<vec.size();++ix)
4         if(vec[ix]==value)
5             retrun &vec[ix];
6     return 0;
7 }
View Code

相关文章: