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

    标准库为相关对象的存储集合提供了各种类型安全容器。容器是类模板;在声明容器变量时,你可以指定该容器将保存的元素类型。可以使用初始值设定项列表构造容器。它们具有用于添加和移除元素以及执行其他操作的成员函数。
    可使用迭代器循环访问容器中的元素以及访问单个元素。可以通过使用其成员函数和运算符以及全局函数来显式使用迭代器。还可以隐式使用它们,例如通过使用范围 for 循环。所有 STL 容器的迭代器都有一个通用接口,但是每个容器会定义自己的专用迭代器。


    容器可以分为三个类别:序列容器、关联容器和容器适配器。

    序列容器
    序列容器维护你指定的插入元素的顺序。
    vector 容器的行为类似于数组,但可以根据要求自动增长。它可以随机访问、连续存储,长度也非常灵活。基于上述和其他原因,vector 是多数应用程序的首选序列容器。
    array 容器具备 vector 的某些优点,但长度不够灵活。
    deque(双端队列)容器支持在容器的起点和终点进行快速插入和删除。它享有 vector 随机访问和长度灵活的优点,但是不具备连续性。
    list容器是双向链表,在容器内的任意位置启用了双向访问、快速插入和快速删除,但是你不能随机访问此容器中的元素。
    forward_list 容器是单独链表,list 的向前访问版本。


    关联容器
    在关联容器中,按照预定义的顺序插入元素,例如按升序排序。无序的关联容器也可用。关联容器可分为两个子集:映射和组集。
    map,有时称为字典,包含键/值对。键用于对序列排序,值与该键关联。例如,map可能包含许多键(代表文本中每个独特的单词)和相应的值(代表每个单词在文本中出现的次数)。 map的无序版本是 unordered_map。
    set仅是按升序排列每个元素的容器,值也是键。 set的无序版本是 unordered_set。
    map 和 set 都仅允许将键或元素的一个实例插入容器中。如果需要元素的多个实例,请使用multimap或multiset。无序版本是 unordered_multimap 和 unordered_multiset。

    容器适配器
    容器适配器是序列容器或关联容器的变体,为了简单明确起见,它对接口进行限制。容器适配器不支持迭代器。
    queue容器遵循 FIFO(先进先出)语义。第一个推送(即插入队列中)的元素将第一个弹出(即从队列中移除)。
    priority_queue容器也是如此组织,因此具有最高值的元素始终排在队列的第一位。
    stack容器遵循 LIFO(后进先出)语义。堆栈上最后推送的元素将第一个弹出。
    由于容器适配器不支持迭代器,因此无法与 STL 算法一起使用。

  • 相关阅读:
    win8 tips
    从win10体验到重装win8
    win10 体验 日志
    磁盘分区与多系统安装(windows ubuntu)
    使用ultraISO制作ISO镜像文件
    C++中const用法总结
    4月8号的打卡
    Java第二次作业
    第一次Java作业
    NX二次开发-改变自制UI界面大小
  • 原文地址:https://www.cnblogs.com/shihaochangeworld/p/5648116.html
Copyright © 2011-2022 走看看