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 );
功能:交换两个数组的元素