• 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 算法一起使用。

  • 相关阅读:
    使用selenium操作ant design前端的页面,感觉页面没加载完
    centos7上PhantomJS 过期之后改用Chrome时填的坑
    《追风行动》有点儿意思
    《听读书怪才解读24部名人传记》笔记
    mysql 8.0 密码加密方式的坑
    huginn website agent对提取结果排序
    Server酱微信推送中的问题
    Huginn定时时间不准确或延后问题
    一本通1219 马走日
    矩阵快速幂
  • 原文地址:https://www.cnblogs.com/shihaochangeworld/p/5648116.html
Copyright © 2020-2023  润新知