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 安插元素不会导致迭代器失效,删除元素,不会导致别的迭代器失效。

  • 相关阅读:
    Mysql表设计需要注意的问题
    Mysql开始root远程访问权限
    python学习之简介
    常用的Git命令
    Java虚拟机类加载机制
    java垃圾回收机制的理解
    解析和操作XML文件
    Hibernate的工作流程以及三种状态(面试题)
    SSH整合
    Spring事务管理的注解方式
  • 原文地址:https://www.cnblogs.com/cmranger/p/4716703.html
Copyright © 2011-2022 走看看