zoukankan      html  css  js  c++  java
  • STL学习笔记--各种容器的运用时机

    如何选择最佳的容器类别?

    • 缺省情况下应该使用vector。vector的内部结构简单,并允许随机存取,所以数据的存取十分方便灵活,数据的处理也够快。
    • 如果经常要在序列的头部和尾部安插和移除元素,应采用deque。此外vector通常采用一个内存区块来存放元素,而deque采用多个区块,所以后者可内含更多的元素。
    • 如果需要经常在容器的中段执行元素的安插、移除和移动,建议使用list。
    • 如果经常需要根据某个准则来搜寻元素,应该使用set或multiset。
    • 处理key/value pair,使用map。

    注意:
    (1) 关联式容器拥有自动排序能力,并不意味着它们在排序方面的执行效率高。事实上由于关联式容器每安插一个新元素,都要进行一次排序,所以速度反而不及序列式容器经常采用的方法:先安插所有的元素,然后调用排序算法进行一次完全排序。
    (2) 迭代器失效的问题
    vector 当内存重新分配时,所有迭代器失效。所以在安插或移除元素可能导致所有或部分迭代器失效。
    deque 安插或移除操作,都将导致迭代器失效。
    list 增加或删除元素不会导致其他迭代器失效。
    map set 安插元素不会导致迭代器失效,删除元素,不会导致别的迭代器失效。

  • 相关阅读:
    第七周总结
    第六周编程总结
    第五周编程总结
    选择加冒泡排序法与找鞍马之总结与感受
    上三角矩阵与数组中元素之和最大
    文件的读写
    打印沙漏
    第八周作业
    第七周作业
    第六周作业
  • 原文地址:https://www.cnblogs.com/cmranger/p/4716703.html
Copyright © 2011-2022 走看看