zoukankan      html  css  js  c++  java
  • c++容器

    1. 容器

    容器类型是用于创建具体容器对象的模板,c++ 11以前的11个容器类型是:deque, list, queue, priority_queue, stack, vector, map, multimap, set, multiset 和 bitset

    c++11 新增了forward_list, unordered_map, unordered_multimap, unordered_set 和 unordered_multiset, 且不再将 bitset 视为容器,而是将其视为一种独立的类别。

    一些基本的容器特征如下:

     c++新增的容器要求

    2. 序列

    序列容器有deque, forward_list, list, queue, priority_queue, stack, vector, array也被归纳到序列容器,虽然不满足序列的所有要求。

    序列要求元素按照严格的线性顺序排列,即存在第一个元素,最后一个元素,除第一个元素和最后一个元素以外,每个元素的前后都有一个元素,数组和链表都是序列,但是分支结构不是。

    deque, list, queue, priority_queue, stack, vector, array都是序列概念的模型,都支持上面模型。

    序列的可选操作

     

     2. vector

    vector是一种数组的类的表示,它提供了自动内存管理的功能,可以动态的改变vector对象的长度

    vector是可反转容器,提供了两个类方法: rbegin()和rend(),前者返回反转序列的超尾迭代器.

    3. deque

    deque表示双端队列,支持随机访问,主要区别在于,deque的开始未知插入和删除 元素的时间是固定的,不像vector是线性时间,如果多数操作发生在队列的起始和结束位置,应当考虑使用deque数据结构

    4. list

    list表示双向链表,除了第一个和最后一个元素以外,每个元素都和前后的元素连接,意味着可以双向遍历链表,list与vector的区别在于,list在链表中任意位置插入和删除的时间都是固定的,(vector提供了除结尾外线性时间的插入和删除,在结尾处,提供了固定时间的插入和删除),因此,vector强调的是通过随机访问快速访问,list 强调的是元素的快速插入和删除。

    vector也是可反转容器,不同的是,list 不支持数组表示法和随机访问,与矢量迭代器不同,在容器中插入和删除元素以后,链表迭代器指向的元素不变。

    5, forward_list

    forward_list是不能翻转的正向迭代器,单链表

    6. queue

    是一个适配器类,底层类为(deque),queue模板的限制比deque多,不允许随机访问队列元素,不允许遍历队列,可以将元素添加到队尾,从队首删除元素,查看队首和队尾元素的值,检查元素的数目和测试队列是否为空。

    7. priority_queue

    是一个适配器类,默认的底层类为vector,在优先队列中,最大的元素被移到队首。默认的底部类是vector,可以修改确定哪个元素放到队首的比较方式

    priority_queue<int> pq;

    priority_queue<int> pq(greater<int>);  // use greater<int> to order

    8. stack

    是一个适配器类,默认的底层为vector,stack的限制比vector更多,不允许随机访问栈元素,不允许遍历栈,把使用限制在定义栈的基本操作上。将压入推到栈顶,从栈顶弹出元素,查看栈顶的值,检查元素的数目,测试栈是否为空。

    9. array

     并非stl容器,因为长度是固定的,array没有定义调整容器大小的操作,如push_back()和insert(),但是定义了operator[]()和at(),可以将很多的stl算法用于array,例如copy()和for_each()

    10 关联容器

    关联容器将值和键关联在一起,并使用键来查找值。stl 提供了四种关联容器,set, multiset, map, multiamp

    set:键和值的类型相同,键是唯一的,集合中不会有多个相同的键,multiset 可能有多个值的键相同。
    The value of an element is also the key used to identify it.  set的键和值相同,set默认是已经排序的。

    map:键和值的类型不同,键是唯一的,集合中不会有多个相同的键,multimap 可能有一个键和多个值关联。

  • 相关阅读:
    18网三袁昳 实验三
    18网三袁昳 网络对抗技术实验二
    18网三袁昳 网络对抗技术实验一
    实验六
    实验五(18网三43号)
    实验四 18网三43号
    实验三(18网三43号)
    实验二(18网三43号袁昳)
    实验一(18网三43号)
    实验四(恶意代码技术)
  • 原文地址:https://www.cnblogs.com/feng-ying/p/10799257.html
Copyright © 2011-2022 走看看