zoukankan      html  css  js  c++  java
  • STL中的容器介绍

    STL中的容器主要包括序列容器、关联容器、无序关联容器等。

    一】序列容器

    (1) vector 

    vector 是数组的一种类表示,提供自动管理内存的功能,除非其他类型容器有更好满足程序的要求,否则,我们

    应默认使用这中容器。

    (2) deque

    deque 表示双端队列,在STL中,其实现类似于vector,支持随机访问。主要区别在于使用deque在开始位置插入和删除元素的时间

    是固定的,所以如果多数操作发生在序列的起始和结尾处,应考虑使用deque结构。

    (3) list

    list表示双向链表。list和vector之间关键的区别在于,list在链表中任一位置进行插入和删除时间都是固定的。list强调的是快速的插入和删除,

    而vector强调的是快速地随机访问。list不支持数组表示法和随机访问

    (4)forward_list

    它实现了单链表,只需要正向迭代器,属于不可反转的的容器。

    (5)queue

    queue模板类是相当于一个适配器,它让底层类(默认为deque)展示典型的队列接口。它的使用限制要比deque多,不允许随机访问队列元素,

    甚至不允许遍历队列。

    (6)priority_queue

    该模板类是另一个适配器类,它支持的操作与queue类似,主要区别在于priority_queue使用时,最大的元素被移到队首;

    底层类默认是vector。可以修改用于确定哪个元素放到队首的比较方式,方法是提供一个可选的构造函数参数。

    (7)stack

    与queue类似,stack也是一个适配器类,它给底层类(默认为vector)提供了典型的栈接口。

    (8)array

    虽然模板类array不是STL容器,但还是可以将很多标准的STL算法用在array对象上,如copy、for_each。

    二】关联容器

    最简单的关联容器就是set,它的值类型与键相同,键是唯一的,对于set来说,值就是键,multiset类似于set,只是可能有多个值的键相同。

    在map中,值与键的类型不同,键是唯一的,每个键只对应一个值,multimap与map类似,只是一个键可以与多个值关联。

    三】无序关联容器

    与关联容器一样,无序关联容器也将值与键关联起来,并使用键来查找值。但是底层的差别在于,关联容器是基于树结构的,而无序关联容器是

    基于数据结构哈希表的,旨在提高添加和删除元素的速度以及提高查找算法的效率。主要有4种无序关联容器,unordered_set、unordered_multiset

    unordered_map、unordered_multimap。

  • 相关阅读:
    Java引用总结--StrongReference、SoftReference、WeakReference、PhantomReference
    Clustered Index
    Docker:一、开始部署第一个Asp.net应用
    数据库死锁 之 三.死锁解读
    数据库死锁 之 二.定位死锁
    数据库死锁 之 一.啥是死锁
    番外篇
    C# QQ & 163 邮件发送
    asp.net core 四 IOC&DI Autofac
    asp.net core 五 SignalR 负载均衡
  • 原文地址:https://www.cnblogs.com/merlinzjl/p/8471041.html
Copyright © 2011-2022 走看看