STL标准库
STL标准库实际上就是类模板,提供了大量通用类模板与函数,实现了代码重复使用,避免了大量的程序员要做的重复工作,并且标准库现在是C++库中的一部分,只需要加上头文件就可以直接使用,十分方便。
STL主要由算法、容器、迭代器,迭代器将两者结合起来,迭代器提供了一种方法,使它能够按照一种特殊的方法顺序访问容器的各个元素。
容器是用来管理某一类对象的集合。C++ 提供了各种不同类型的容器,容器分为序列式容器(list,vector等)与关联式容器(map、set等).
算法作用于容器,它提供了一种执行各种操作的方式,包括对容器的初始化,排序,搜索,转换等操作
迭代器用于遍历对象集合的元素。这些集合可能是容器,也可能是容器的子集。迭代器将算法与容器分开,好让两者可以独立设计。
Vector为例的函数(vector与数组十分相似,唯一不同的是,向量在需要扩展大小的时候,会自动处理它自己的存储需求)
- push_back( ) 成员函数在向量的末尾插入值,如果有必要会扩展向量的大小。
- size( ) 函数显示向量的大小。
- begin( ) 函数返回一个指向向量开头的迭代器。
- end( ) 函数返回一个指向向量末尾的迭代器。
#include <iostream> #include <vector> using namespace std; int main() { // 创建一个向量存储 int vector<int> vec; int i; // 显示 vec 的原始大小 cout << "vector size = " << vec.size() << endl; // 推入 5 个值到向量中 for(i = 0; i < 5; i++){ vec.push_back(i); } // 显示 vec 扩展后的大小 cout << "extended vector size = " << vec.size() << endl; // 访问向量中的 5 个值 for(i = 0; i < 5; i++){ cout << "value of vec [" << i << "] = " << vec[i] << endl; } // 使用迭代器 iterator 访问值 vector<int>::iterator v = vec.begin(); while( v != vec.end()) { cout << "value of v = " << *v << endl; v++; } return 0; }