deque容器:
头文件:#include
双端队列容器,依然采用队列的管理规则只能两端进出数据,与普通队列不同的是,它的两端都可以进出。
其实就是在向量的基础上增加了两端管理的功能。
构造函数:
deque( size_type size );
功能:创建一个大小为size的双向队列
deque( size_type num, const TYPE &val );
功能:创建一个双向对象并放置num个值为val的元素
deque( input_iterator start, input_iterator end );
功能:使用一组数据构造一个双向队列
支持的运算符:
[] 既可以访问元素也可以赋值
=、==、!=、<、>、<=、>= 与链表、数组的比较无则相同
常用成员函数:
void assign( input_iterator start, input_iterator end);
功能:使用一组数据给双向队列赋值
void assign( Size num, const TYPE &val );
功能:给队列中的前n个元素赋值为val,并删除后面的元素
TYPE& at( size_type loc );
const TYPE& at( size_type loc ) const;
功能:访问队列中的元素,与[]运算符的功能一样,当下标越界时,at会抛出异常,而[]会可能会产生段错误、脏数据、一切正常。
TYPE& back();
const TYPE& back() const;
功能:获取队尾元素
TYPE& front();
const TYPE& front() const;
功能:获取队头
iterator begin();
const_iterator begin() const;
功能:返回一个正常迭代器,指向第一个元素
iterator end();
const_iterator end() const;
功能:返回一个正常迭代器,指向最后一个元素的下一个位置
void clear();
功能:清空所有元素
bool empty() const;
功能:判断队列是否为空
iterator erase( iterator loc );
功能:删除一个元素
iterator erase( iterator start, iterator end );
功能:删除一个范围的元素
iterator insert( iterator loc, const TYPE& val );
功能:在指定的位置插入一个val元素
void insert( iterator loc, size_type num, const TYPE& val );
功能:在指定的位置插入num个值为val的元素
template<TYPE> void insert( iterator loc, input_iterator start,
input_iterator end );
功能:在指定的位置插入一组元素
size_type max_size() const;
功能:计算出能存储的最多元素数量,原理与vector一样
void pop_back();
功能:从队尾弹出一个元素
void pop_front();
功能:从队头弹出一个元素
void push_back( const TYPE& val );
功能:从队尾入队
void push_front( const TYPE& val );
功能:从队头入队
reverse_iterator rbegin();
const_reverse_iterator rbegin() const;
功能:返回一个逆向迭代器,指向最后一个元素
reverse_iterator rend();
const_reverse_iterator rend() const;
功能:返回一个逆向迭代器,指向第一个元素的前一个位置
void resize( size_type size, TYPE val );
功能:修改队列的元素数量
可以往大了改,相当增加元素 值是val
也可以往小了改,相当于删除元素
size_type size() const;
功能:获取队列元素的数量
void swap( container& from );
功能:交换两个队列中的元素
priority_queue容器
头文件:#include
优先队列,该队列会对入队的数据进行排序,元素越大越先出队。
注意:存储的元素应支持<运算符。
bool empty() const;
功能:判断队列是否为空
void pop();
功能:出队,按排序后的顺序,大的元素优先出队
void push( const TYPE& val );
功能:入队,入队后的元素会自动进行排序
size_type size() const;
功能:获取队列中元素的数量
TYPE& top();
功能:获取队头元素,队列中最大的元素
set容器
头文件:#include
集合容器,特点是元素不能重复,会对元素自动排序,因此它存储的元素必须支持<运算符,只能使用迭代器遍历。
构造函数:
只有无参构造和拷贝构造。
支持的运算符:与list容器一样。
成员函数:
iterator begin();
const_iterator begin() const;
功能:返回一个正常迭代器,指向第一个元素
iterator end();
const_iterator end() const;
功能:返回一个正常迭代器,指向最后一个元素的下一个位置
void clear();
功能:清空所有元素
bool empty() const;
功能:判断队列是否为空
iterator erase( iterator loc );
功能:删除一个元素
iterator erase( iterator start, iterator end );
功能:删除一个范围的元素
size_type count( const key_type& key );
功能:获取集合中key元素的数量,结果只能是0或1,可用于判断key是否存在,在此容器中无意义。
iterator find( const key_type& key );
功能:查找在集合中查找值为key的元素,并返回指向该元素的迭代器,如果集合中没有key则返回end()的值。
pair<iterator, iterator> equal_range( const key_type& key );
功能:查找集合中值为key的元素,并返回一个迭代器范围[start,end),在此容器无意义。
void insert( input_iterator start, input_iterator end );
功能:向集合中添加一组元素
pair<iterator,bool> insert( const TYPE& val );
功能:向集合中插入一组元素
key_compare key_comp() const;
功能:返回一个用于比较元素的函数对象。
bool cmp(T& a,T& b)
{
return !(a<b) && !(b<a);
}
value_compare value_comp() const;
功能:在该容器中它与key_comp的功能一模一样。
iterator lower_bound( const key_type& key );
功能:返回一个大于等于key值的元素的迭代器(最小的)
iterator upper_bound( const key_type& key );
功能:返回一个小于等于key值的元素的迭代器(最大的)
reverse_iterator rbegin();
const_reverse_iterator rbegin() const;
功能:返回一个逆向迭代器,指向最后一个元素
reverse_iterator rend();
const_reverse_iterator rend() const;
功能:返回一个逆向迭代器,指向第一个元素的前一个位置
size_type max_size() const;
功能:计算出能存储的最多元素数量,原理与vector一样
void swap( container& from );
功能:交换两个集合中的元素
multiset容器
头文件:#include
多重集合容器,特点是元素可以重复,会对元素自动排序,因此它存储的元素必须支持<运算符,只能使用迭代器遍历。
size_type count( const key_type& key );
功能:计算值为key的元素的数量,此该容器变的有意义。
pair<iterator, iterator> equal_range( const key_type& key );
功能:查找集合中值为key的元素,并返回一个迭代器范围[start,end),此该容器变的有意义。
map容器
头文件:#include
key和value一一对应,可以根据key(相当于下标)访问value,底层采用红黑树存储数据,因此查找效率极高。
构造函数:
map( iterator start, iterator end);
功能:使用一组数据(pair类型)构造映射容器
map( iterator start, iterator end, const key_compare& cmp );
功能:使用一组数据(pair类型)构造映射容器,并提供key的比较函数。
map(const key_compare& cmp);
功能:构造映射容器,并提供key的比较函数。
支持的运算符:
[] 使用key值作为下标
既可以用来访问,也可以用来赋值(插入数据)。
iterator insert( iterator i, const TYPE& pair );
功能:在指定的位置插入一对键值
void insert( input_iterator start, input_iterator end );
功能:几映入容器中插入一组数据(pair类型)
pair<iterator,bool> insert( const TYPE& pair );
功能:插入一对键值,并返回插入的结果。