容器综合

Vector

vector可以随机存取元素(支撑索引值直接存取, 用[]操作符或at()方法,这个等下会详讲)。

尾部添加或移除元素非常快速。但是在中部或头部插入元素或移除元素比较费时

Deque? 和vector一样都是STL的容器,deque是双端数组,而vector是单端的。

以随机存取元素(支撑索引值直接存取, 用[]操作符或at()方法,这个等下会详讲)。

#########

priority_queue<int> p1; //默认是 最大值优先级队列

//priority_queue<int, vector<int>, less<int> > p1; //相当于这样写

priority_queue<int, vector<int>, greater<int>> p2; //最小值优先级队列

greater? ? 降序

less? 升序

###############

stack??

先进后出

链式堆栈

数组堆栈

Queue? ? “先进先出”

List list是一个双向链表容器,可高效地进行插入删除元素。? 比数组好

list不可以随机存取元素,所以不支撑at.(pos)函数与[]操作符。It++(ok) it+5(err)

Set? ? 红黑树的? ? 一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列

集合中的元素按一定的顺序排列

#########pair< set<int>::iterator , set<int>::iterator > pairIt = setInt.equal_range(5);

map? ? ? 是标准的关联式容器? ? (key,value)红黑树变体的平衡二叉树

? ? ? ? #######map[key]=value。map<int, char> mapA;mapStu.insert(? pair<int,string>(3,"小张")? );

? ? ? ? ? ? ? ? ? ? ? ? map<int, int> _map;

? ? _map[0] = 1;

iter->first << " : " << iter->second

四、通过数组的方式插入值

########mapStu[3] = “小刘";

##########mapStu[5] = “小王";


? list的使用场景:比如公交车乘客的存储,随时可能有乘客下车,支撑频繁的不确实位置元素的移除插入。

? set的使用场景:比如对手机游戏的个人得分记录的存储,存储要求从高分到低分的顺序排列。

? map的使用场景:比如按ID号存储十万个用户,想要快速要通过ID查找对应的用户。二叉树的查找效率,这时就体现出来了。如果是vector容器,最坏的情况下可能要遍历完整个容器才能找到该用户。

推荐阅读更多精彩内容

  • STL部分 1.STL为什么广泛被使用 C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vec...
    杰伦哎呦哎呦阅读 1,529评论 0赞 8
  • 容器的概念所谓STL容器,即是将最常运用的一些数据结构(data structures)实现出来。容器是指容纳特定...
    饭饭H阅读 61评论 0赞 0
  • 什么是容器 首先,大家必须理解一下什么是容器,在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其...
    Jack_Cui阅读 114评论 0赞 2
  • STL(标准模板库),是目前C++内置支撑的library。它的底层利用了C++类模板和函数模板的机制,由三大部分...
    岁与禾阅读 15,485评论 3赞 112
  • Java集合类可用于存储数量不等的对象,并可以实现常用的数据结构如栈,队列等,Java集合还可以用于保存具有映射关...
    小徐andorid阅读 973评论 0赞 13