STL是Standard Template Library的简称,主要包括三部分:algorithm,container和iterator。
容器向量Vector
Vector属于STL中的container,是一个container向量。
在《C++ Primier》中是这么定义的:
标准库类型Vector表示对象的集合,其中所有对象的类型都相同。集合中的每个对象都有一个与之对应的索引,索引用于访问对象。它是一个类模板。
在g++环境下进行实验:
测试结果:
输入8,屏幕打印8
输入0,屏幕打印80
输入2,屏幕打印802
输入3,屏幕打印8023
这个程序会在每次输入后,输出从开始到当前的所有输入。这些值全部是存在vi这个向量数组中,而输出是用一个迭代器指针进行输出(可以用迭代器或者下标运算符访问来进行输出。cout不能直接输出一个vector)。这里的 vector<int>vi
声明vi存储int类型。
这个程序打印出tuzhi,这里的 vector<string>vecstr
声明vecstr存储string类型。
容器的iterator类型
迭代器这个名词有三个不同的含义:可能是迭代器本身,也可能是指容器定义的迭代器类型,还可能是指某个迭代器对象。
上面两个例子都用到了类似 vector<T>::iterator iter
这种东西。它是一个容器定义的迭代器类型。每种容器类型都定义了自己的迭代器类型,如vector:
vector<int>::iterator iter;
这条语句定义了一个名为iter的变量,它的数据类型是由vector
不同的容器类定义了自己的iterator类型,用于访问容器内的元素。换句话说,每个容器定义了一种名为iterator的类型,而这种类型支持(概念上的)迭代器的各种行为。
关于迭代器的更多介绍,可以参见《C++ Primier》Page95~Page101。
##Reference#
[1].http://www.cnblogs.com/shiyangxt/archive/2008/09/11/1289493.html
[2].http://www.cplusplus.com/reference/vector/vector/
[3].《C++ Primier》Page95~Page101