![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C\C++容器
代码黑洞_
好记性不如烂笔头
展开
-
容器认识提高
1、容器中缓存了用户的节点2、节点的类要保证节点能够插入到容器中,一般节点类需要提供无参构造函数、拷贝构造函数、重载operator=操作符3、容器是值语意,而非引用语意 ,容器执行插入操作时,内部执行拷贝动作,所以stl容器中存储的元素必须能够被拷贝。4、出现指针变量时要考虑到避免野指针的出现,因此类的内部必须提供拷贝构造函数和重载等号(operator=)操作符。5、除了que...原创 2019-11-21 13:55:39 · 106 阅读 · 0 评论 -
Map和multimap容器
1、map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对。它提供基于key的快速检索能力。2、map中key值是唯一的。集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入位置。3、map的具体实现采用红黑树变体的平衡二叉树的数据结构。在插入操作和删除操作上比vector快。4、map可以直接存取key所对应的value,支持[]操作...原创 2019-11-15 18:09:05 · 144 阅读 · 0 评论 -
Set和multiset容器
1、set是一个集合容器,其所包含的元素是唯一的,元素按顺序排列,不支持在指定位置插入元素,不可以直接存取元素。2、multiset与set的区别:set容器中元素唯一,而multiset支持中支持同一值出现多次。3、不可以直接修改set或multiset容器中的元素值,因为该类容器是自动排序的。如果希望修改一个元素值,必须先删除原有的元素,再插入新的元素。#include <s...原创 2019-11-15 11:29:36 · 141 阅读 · 0 评论 -
优先级队列priority_queue
此队列存在最大值优先级队列,最小值优先级队列,在开发中可以做一些特殊的应用。添加的数据会最大值优先排列或最小优先排列。#include <queue>//最大值优先队列priority_queue<int> p1; //默认是 最大值优先级队列 priority_queue<int, vector<int>, less<int> ...原创 2019-11-14 10:23:19 · 201 阅读 · 0 评论 -
List容器
list是一个双向链表容器,可高效的进行插入和删除元素。list不可以随机存取元素,不支持at函数与operator[]操作符。#include <list>头尾的添加移除操作list.push_back(elem); //在容器尾部加入一个元素 list.pop_back(); //删除容器中最后一个元素 list.push_front(...原创 2019-11-13 15:51:07 · 141 阅读 · 0 评论 -
Queue容器
queue是队列容器,它的特点是先进先出。大部分操作与之前的容器大致相同。#include <queue>push()//往队尾添加元素 front()//返回第一个元素 back()//返回最后一个元素 empty()//判断队列是否为空 pop()//从队头移除第一个元素queue对象的拷贝构造与赋值queue(const queue &que); ...原创 2019-11-13 10:42:39 · 146 阅读 · 0 评论 -
Stack栈模型
stack是堆栈容器,特点是“先进的元素后出”。其他操作方式参考vector容器#include <stack> push()//入栈 empty()//是否为空 top()//获取栈顶元素 pop()//弹出栈顶元素stack对象的拷贝构造与赋值stack(const stack &stk); //拷贝...原创 2019-11-12 18:02:46 · 336 阅读 · 0 评论 -
Deque容器
deque是双端数组,而vector是单端的。deque在接口上和vector非常相似,在许多操作的地方可以直接替换。deque可以随机存取元素(支持索引值直接存取, 用[]操作符或at()方法)。deque头部和尾部添加或移除元素都非常快速。但是在中部安插元素或移除元素比较费时。#include <deque>末尾的添加移除操作deque.push_back(e...原创 2019-11-12 17:18:27 · 196 阅读 · 0 评论 -
Vector容器
vector是将元素置于一个动态数组中加以管理的容器,可以随机存取,在尾部执行添加和删除时比在头部快。vector<T> vT;采用模板类实现。由于容器元素的存放是按值复制的方式进行的,在对类操作时必须提供类的拷贝构造函数,保证类对象的正常拷贝。vector对象的带参数构造vector(beg,end); //构造函数将[beg, end)...原创 2019-11-12 16:36:25 · 179 阅读 · 0 评论 -
STL中的string
string和char*都可以表示字符串:string是一个类,char*是一个指向字符的指针。string封装了char*,管理这个字符串,是一个char*类型的容器。string管理char*所分配的内存,不用考虑内存释放和越界。string的构造函数string(); //默认构造函数,构造一个空的字符串 string(const string &str); ...原创 2019-11-12 13:56:50 · 121 阅读 · 0 评论