![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++STL专栏
文章平均质量分 59
Mango酱
这个作者很懒,什么都没留下…
展开
-
C++STL之各种容器的使用场景
1 总结相关容器的使用场景1)vector的使用场景:只查看,而不频繁插入删除的,因为频繁插入删除会造成内存的不断搬家和删除。使用场景比如软件历史操作记录的存储,我们经常要查看历史记录,比如上一次的记录,上上次的记录,但却不会去删除记录。2)deque的使用场景:比如排队购票系统,对排队者的存储可以采用deque,支持头端的快速移除,尾端的快速添加。如果采用vector,则头端移除时,会移动大量的数据,速度慢。vector与deque的比较:一:vector.at()比deque.at()效原创 2021-01-22 23:02:50 · 2015 阅读 · 0 评论 -
C++STL之multimap容器
1 multimap容器由于multimap的接口和map是基本一样的,唯一的区别是和set于multiset一样,multimap可以存储多个相同的key,而map只能存储一个,所以这里不再讲multimap的用法,大家可以去我的map文章参考相关成员函数。我的map测试文章链接。或者大家也可以自行百度其它文章参考。https://blog.csdn.net/weixin_44517656/article/details/110247244...原创 2021-01-22 22:59:42 · 102 阅读 · 0 评论 -
C++STL之set/multiset容器
概述:set/multiset容器的特性:1)set/multiset的特性是所有元素会根据元素的值自动进行排序。set是以RB-tree(红黑树,属于平衡二叉树的一种,而平衡二叉树是属于二叉树的一种)为底层机制,其查找效率非常好。set容器中不允许重复元素,multiset允许重复元素。树的相关概念1)二叉树:二叉树就是任何节点最多只允许有两个字节点。分别是左子结点和右子节点。2)二叉搜索树:是指二叉树中的节点按照一定的规则进行排序,使得对二叉树中元素访问更加高效。二叉搜索树的放置原创 2021-01-22 22:52:03 · 192 阅读 · 0 评论 -
C++STL之stack容器
概述:栈容器非常简单,不需要测试什么内容。只需要记住先进后出即可。并且该容器提供的函数接口不多。1 stack容器的相关函数1.1 构造函数//stack构造函数stack<T> stkT;//stack采用模板类实现, stack对象的默认构造形式:stack(const stack &stk);//拷贝构造函数1.2 stack赋值操作stack& operator=(const stack &stk);//重载等号操作符1.3 stack数据存原创 2021-01-22 21:00:05 · 153 阅读 · 0 评论 -
C++STL之deque容器
概述:上一篇我们讲过queue容器,它是一个单向的队列,只能从尾部插入,头部删除。而本节讲的deque容器,它是一个双向的队列,在头尾均可以调用插入与删除,并且支持迭代器和迭代器随机访问,这是它与queue的最大区别。1 deque容器的遍历非常简单,同样是使用迭代器遍历即可。void printDeque(const deque<int>&d){ // iterator 普通迭代器 // reverse_iterator 反转迭代器 // const_iterator原创 2021-01-21 22:33:42 · 403 阅读 · 0 评论 -
C++STL之queue容器
概述:queue容器是一个队列,非常简单,它不支持迭代器,不支持随机访问。常用的方法是利用其先进先出的特性去接收消息,然后处理消息,例如车站的排队。当然list容器也可以实现先进先出,看你喜欢用哪一个,效率都差不多。但是这里需要注意一点,不管是list或者queue,都需要自己去控制实现先进先出。1 Queue队列容器案例由于queue队列容器非常简单,并且不支持迭代器,所以不需要测试是否会造成迭代器失效的例子。下面直接给出一个案例,项目中一般使用都是按照先进先出的方法使用即可,当然,多线程下记得加原创 2021-01-17 20:58:45 · 223 阅读 · 0 评论 -
C++STL之list容器
1 构造函数void test03() { list<int> l1; list<int> l2(10, 5);//有参构造,创建10个5 list<int> l3(l2);//拷贝构造 list<int> l4(l2.begin(), l2.end()); for (list<int>::iterator it = l4.begin(); it != l4.end(); it++){ cout << *it <&原创 2021-01-17 15:01:55 · 368 阅读 · 0 评论 -
C++STL之vector容器
C++STL之Vector容器1 Vec容器的插入vector的插入不难,一般我们在使用时都是使用push_back插入,当使用下标法时在不指定vec大小很容易越界,编译器不会开辟默认容量(我记得以前的好像会默认开辟20大小的容量)。//vector的插入void test01() { vector<int> vi1; //1 push_back往尾部插入法 vi1.push_back(10); vi1.push_back(40); vi1.push_back(20);原创 2020-11-29 18:41:52 · 402 阅读 · 0 评论 -
C++STL之map容器
C++STL之Map容器1 map容器的四种插入方式非常简单,看下面代码和注释即可。这里强调一下使用下标插入,凡是写出例如m[3]而没有赋值的话都将以默认值0插入容器,key=3在容器是存在的,不能忽视。//1 map的四种插入方法void MapInsert(map<int, int> &m) { //1 通过模板pair对组.返回一个对组对象.其中:对组对象的模板参1为:被插入容器的(此处为map)迭代器类型;模板参2为:布尔类型,用于判断是否插入成功. std::pa原创 2020-11-27 22:07:13 · 420 阅读 · 0 评论