zoukankan      html  css  js  c++  java
  • C++ STL(四)容器介绍

    容器:用来管理和存储一组元素的数据集合,

    所有STL容器内部都提供默认构造函数和默认拷贝构造函数,当容器中加入元素时,内部会进行值拷贝,而不是引用

    所有STL容器都提供了一些相同的操作方法,比如:

    size()   返回容器中元素个数

    empty()  容器是否为空

    c1 == c2   比较二个容器中所有元素是否相同

    c1 != c2    比较二个容器中是否有不相同的元素

    c1 = c2    把另一个容器c2中所有元素赋值给容器c1

    容器的种类:

    序列式容器: 以线性的方式来存储一组元素,元素的位置与元素值本身没有关系,可以根据插入位置指定插入,但是不具备自动排序功能

    vector(动态数组)  deque(双端队列) list(双向链表)

    关联式容器: 以平衡二叉的方式来存储一组元素,元素的位置是经过排序的,默认以升序排序,不能在指定位置进行插入

    set  mulitset  map multimap

    各个容器的特点:

    名个容器的选择:

    1.比如存储游戏得分,而得分需要进行排序,那具备自动排序功能的就set和map,

    但是我们又不需查找,那此时set就符合我们的需求

    2.比如存储学生考试成绩,而学生考试成绩有个ID号,以及学生信息,学生考试成绩需要根据分数进行自动排序,

    并且需要根据学生ID号查询学生信息,此时满足自动排序并且能根据指定Key(学生ID号)查询到学生信息的容器只有map..

    3.比如排队购票系统,前面的人走了需要移除容器中的头部元素,而后面的人来了需要从尾部插入元素。不需要自动排序及快速查找,

    此时适合的就剩下vector和deque以及list, 而vector移除头部元素虽然可以,但是需要移动大量的数据,效率低。

    同样的list也可以,而我们仅仅需要的是头部和尾部快速插入删除, 并不需要改变容器中其它元素,以够用原则来衡量,deque最适合.

    4.比如公交车乘客系统,随时有乘客要下车需要从容器任意位置进行删除,同样不需要自动排序和查询,此时适合的就剩下vector和deque以及list。

    vector适合尾部快速插入删除,而deque适合头部和尾部快速插入删除,任意位置插入删除最合适的只有list

    5. 比如存储日志,不需要自动排序也不需要查询,有新日志时插入容器尾部,不需要从头部或者任意位置插入,需要快速的清空容器中所有元素,

    此时vector是最合适的选择

    总之根据不同的场景选择不同的容器,发挥每种容器的特点,效率同等的情况下功能够用就好

  • 相关阅读:
    RSA算法
    Windows-caffe配置
    python 下 excel,csv 文件的读写
    python 网络通讯 服务器端代码demo,能够同时处理多个客户端的连接请求
    python 下串口数据的读取,解析,和保存-
    XML字符串和JAVA对象之间的转化
    MySQL的join on和 where 的执行顺序和区别,以及各种连接说明
    全国各行政区行政编码
    计数器+打卡+习惯+目标APP推荐
    安卓计数器类APP推荐
  • 原文地址:https://www.cnblogs.com/fzxiaoyi/p/12092539.html
Copyright © 2011-2022 走看看