STL模板库
STL是Standard Template Library缩写,中文名字叫标准模板库,由惠普实验室提供,共有三类内容: 算法:以函数模板形式实现的常用算法,如:max、min、swap、find、sort。 容器:以类模板形式实现的常用数据结构,如:栈、队列、链式表、顺序表、红黑树。 迭代器:它是容器的成员,用于帮助访问容器中的元素,使用方法类似于指针。
常用函数
#include <algorithm> iterator find( iterator start, iterator end, const TYPE& val ); 功能:顺序查找 start:第一元素的指针或迭代器 end:最后一个元素的下一个位置 val:待查找的关键数据 返回值: 找到 [start,end) 范围的指针或迭代器 找不到则返回end #include <algorithm> void sort( iterator start, iterator end ); void sort( iterator start, iterator end, StrictWeakOrdering cmp ); 功能:快速排序 start:第一元素的指针或迭代器 end:最后一个元素的下一个位置 cmp: bool cmp(T a,T b) { return a<b; }
vector向量容器
头文件:vector 采用顺序结构的内存存储数据,可以通过下标随机访问,因此也被称为数组容器。 构造函数: vector( size_type num, const TYPE &val ); num:数组的长度 val:初始化数据 vector( input_iterator start, input_iterator end ); 功能:使用一组数据初始化数组 start:第一个元素 end:最后一个元素的下一个位置 支持的运算符: =、==、!= <=、>=、<、> 按照字符串的比较规则进行比较的 [] 下标 >= size() 就会出现段错误,数组不会随着访问而扩展内存,而是添加元素才扩展内。 常用成员函数: void assign( input_iterator start, input_iterator end); 功能:使用一组数据给数组赋值 void assign( size_type num, const TYPE &val ); 功能:给数组的前num个元素赋值为val TYPE at( size_type loc); 功能:访问数组成员,功能相当于[],当loc越界时at函数会抛出异常,而[]越界时可能出现段错误、脏数据、一切正常。 TYPE back(); 功能:返回数组中的最后一个元素 TYPE front(); 功能:返回数组中的第一个元素 iterator begin(); const_iterator begin() const; 功能:返回指向第一个的元素的迭代器 iterator end(); const_iterator end() const; 功能:返回指向最后一个元素下一个位置的迭代器 注意:迭代器对于vector的用处不大,但对于其它容器迭代器是唯一的遍历方式。 size_type capacity(); 功能:获取数组的容量 void clear(); 功能:清空数组中的所有元素,容量不变,元素数量变为0。 iterator erase( iterator loc ); 功能:删除一个元素 iterator erase( iterator start, iterator end ); 功能:删除一部分元素 注意:删除元素时必须提供迭代器 iterator insert( iterator loc, const TYPE &val ); 功能:在某个元素之前插入一个元素,位置以迭代器的形式提供 void insert( iterator loc, size_type num, const TYPE &val ); 功能:在某个元素之前插入n个元素,位置以迭代器的形式提供 void insert( iterator loc, input_iterator start, input_iterator end ); 功能:在某个元素之前插入一组元素,位置以迭代器的形式提供 size_type max_size(); 功能:用于计算数组能存储的最大元素数量,因为数组的内存扩张是有限度的(4294967295),具体能存储多个元素由元素的类型决定。 void pop_back(); 功能:删除最后一个元素 void push_back( const TYPE &val ); 功能:在末尾添加一个元素,当数组内存不够会在现在的基础上扩展一倍内存。 reverse_iterator rbegin(); const_reverse_iterator rbegin() const; 功能:返回一个逆向迭代器,它指向最后个元素 reverse_iterator rend(); const_reverse_iterator rend() const; 功能:返回一个逆向迭代器,它指向第一个元素前一个位置 void reserve( size_type size ); 功能:修改数组的容量,只能往大了改。 void resize( size_type size, TYPE val ); 功能:修改数组的元素数量 可以往大了改,相当增加元素 值是val 也可以往小了改,相当于删除元素 void swap( vector &from ); 功能:交换两个数组的元素