STL模板库-2

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不能有重复,会根据key进行排序,所以key必须支持<运算符。

    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 );
    功能:插入一对键值,并返回插入的结果。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值