c++提供了各具特长的容器,那么我们该如何选择最佳的容器?

  • 缺省状态下应该选择vector,因为vector内部结构最简单,并允许随机存取,所以数据的存取十分方便,数据的处理也快。
  • 如果经常要在头部和尾部安插和移动元素,应该采用deque,如果希望元素被移除时,容器能够自动缩减内存,也应该使用deque。
  • 如果经常在容器的中段执行元素的安插、移除和移动,可以使用list,list提供特殊的成员函数,可以在常数时间内从A容器将元素转移到B容器,但是list不支持随机存取,所以如果只知道list的头部元素,需要访问list的中部元素,性能会大打折扣。
  • 如果经常需要根据某个准则来搜寻某个元素,那么应该使用“以该排序准则对元素进行排序的”set或者multiset。
  • 如果需要key/value pair,应当使用map或者multimap。如果需要关联数组,也可以使用map或者multimap。

【C++ STL】容器的选择的更多相关文章

  1. STL容器的适用情况

     转自http://hsw625728.blog.163.com/blog/static/3957072820091116114655254/ ly; mso-default-props:yes; m ...

  2. STL容器的本质

    http://blog.sina.com.cn/s/blog_4d3a41f40100eof0.html 最近在学习unordered_map里面的散列函数和相等函数怎么写.学习过程中看到了一个好帖子 ...

  3. 转:STL容器里存放对象还是指针

    一.问题的引出: 容器可以存放对象,可以存放指针,这里要谈的是两者的使用问题.就是什么时候存放对象更好,什么时候存放指针更好? 二.问题的分析过程: 1. 首先说下stl容器的工作方式   对于内建类 ...

  4. STL容器总结

    一. 种类: 标准STL序列容器:vector.string.deque和list. 标准STL关联容器:set.multiset.map和multimap. 非标准序列容器slist和rope.sl ...

  5. 关于STL容器

    容器: 概念:如果把数据看做物体,容器就是放置这些物体的器物,因为其内部结构不同,数据摆放的方式不同,取用的方式也不同,我们把他们抽象成不同的模板类,使用时去实例化它 分类: 序列容器.关联容器.容器 ...

  6. STL容器底层数据结构的实现

    C++ STL 的实现: 1.vector      底层数据结构为数组 ,支持快速随机访问   2.list            底层数据结构为双向链表,支持快速增删   3.deque     ...

  7. STL 容器的概念

    STL 容器的概念 在实际的开发过程中,数据结构本身的重要性不会逊于操作于数据结构的算法的重要性,当程序中存在着对时间要求很高的部分时,数据结构的选择就显得更加重要. 经典的数据结构数量有限,但是我们 ...

  8. [转]STL 容器一些底层机制

    1.vector 容器 vector 的数据安排以及操作方式,与 array 非常相似.两者的唯一区别在于空间的运用的灵活性.array 是静态空间,一旦配置了就不能改变,vector 是动态数组.在 ...

  9. STL容器——对map排序

    STL容器(三)——对map排序 对于map的排序问题,主要分为两部分:根据key排序:根据value排序.下面我们就分别说一下~ 1. 根据key进行排序 map默认按照key进行升序排序 ,和输入 ...

  10. STL容器简介

    stl不是面向对象的编程,而是一种不同的编程模式————泛型编程 我们常用到的STL容器有vector.list.deque.map.multimap.set.multiset 顺序性容器:vecto ...

随机推荐

  1. Fafa and the Gates(模拟)

    Two neighboring kingdoms decided to build a wall between them with some gates to enable the citizens ...

  2. 第四次作业之psp

    psp 进度条 博文字数累积折线图 代码行数累积折线图 psp饼状图

  3. CSS基础小记

    2017/10/29 CSS 认识CSS样式 CSS全称为"层叠样式表 (Cascading Style Sheets)",它主要是用于定义HTML内容在浏览器内的显示样式,如文字 ...

  4. zabbix概念

    Zabbix是一个企业级的.开源的.分布式监控解决方案. Zabbix可以监控网络和服务的监控状况. Zabbix利用灵活的告警机制,允许用户对事件发送基于Email的告警. 这样可以保证快速的对问题 ...

  5. dedecms 后台登录地址

    dedecms  后台登录地址 http://www.域名.com/member/index.php

  6. WPF 分页控件的实现 -用户控件

    效果图:

  7. java直接访问JNDI工具代码

    import java.sql.*; import java.util.*; import javax.naming.*; import javax.sql.DataSource; public cl ...

  8. 关于Axure RP

    Axure RP 是一款专业的原型设计工具 用于快速创建应用软件的线框图.流程图.原型和规格说明文档 贴一张图

  9. django_filters实现搜索

    定义model # models.py class Product(models.Model): name = models.CharField(max_length=255) author = mo ...

  10. bzoj 1862: [Zjoi2006]GameZ游戏排名系统 & bzoj 1056: [HAOI2008]排名系统

    傻叉了一晚上,把t打成x,然后这题神奇在于输出一段数,不足的不用输出,一开始我的是直接找没有后面就退,然后这样会格式错误囧……然后最后zj的还卡了下空间,于是不用string就过了……string毁一 ...