STL
文章平均质量分 77
StudyWinter
持续学习
展开
-
【c++容器】C++ STL容器如何解决线程安全的问题
对于vector,即使写方(生产者)是单线程写入,但是并发读的时候,由于潜在的内存重新申请和对象复制问题,会导致读方(消费者)的迭代器失效。实际表现也就是招致了core dump。另外一种情况,如果是多个写方,并发的,也会导致core dump。当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做Core Dump(中文有的翻译成“核心转储”)。转载 2022-08-25 10:52:40 · 3316 阅读 · 0 评论 -
STL 容器迭代器失效总结
原迭代器指的是进行操作之前保存的迭代器,包括begin()、end()以及其他位置的迭代器。1 vector插入元素:(1)尾后插入push_back():size < capacity时,首迭代器不失效尾迭代失效(未重新分配空间),size == capacity时,所有迭代器均失效(需要重新分配空间)。(2)中间插入insert(iterator, n):中间插入:size < capacity时,首迭代器不失效但插入元素之后所有迭代器失效,size == capacity时原创 2022-05-27 10:19:32 · 251 阅读 · 0 评论 -
c++中map unordered_map按照value排序几种优雅的写法
我们首先假设我们要操作的map、unordered_map对象是m。第一种做法是先建立一个vector<pair<type, type>>的容器。std::vector<std::pair<int, int>> tmp;for (auto& i : m) tmp.push_back(i);std::sort(tmp.begin(), tmp.end(), [=](std::pair<int, int&转载 2022-04-09 17:42:09 · 2618 阅读 · 0 评论 -
【c++容器】顺序容器和关联式容器
一、顺序容器vector 可变大小数组。支持快速随机访问。在尾部之外的位置插入或者删除元素很慢 deque 双端队列。支持快速随机访问,在头尾位置插入/删除元素很快 list 双向链表。只支持双向顺序访问。在list中任何位置进行插入/删除速度都很快 forward_list 单向链表。只支持单向顺序访问。在链表的任何位置进行插入/删除都很快 array 固定数组大小。支持快速随机访问,不能添加或删除元素 string...原创 2021-09-19 17:29:28 · 629 阅读 · 0 评论 -
【c++容器】map和unordered_map的差别和使用
转载:https://blog.csdn.net/BillCYJ/article/details/78985895内容会持续更新,有错误的地方欢迎指正,谢谢!1、map和unordered_map的差别还不知道或者搞不清unordered_map和map是什么的,请见:http://blog.csdn.net/billcyj/article/details/780654381.1 需要引入的头文件不同map: #include < map >uno转载 2021-09-08 09:42:22 · 254 阅读 · 0 评论 -
【c++容器】priority_queue的常见用法详解
priority_queue又称为优先队列,其底层是用堆来进行实现的。在优先队列中,队首元素一定是当前队列中优先级最高的那一个。例如在队列有如下元素,且定义好了优先级:桃子(优先级3) 梨子(优先级4) 苹果(优先级1)那么出队的顺序为梨子(4)→桃子(3)→苹果(1)。当然,可以在任何时候往优先队列里面加入(push)元素,而优先队列底层的数据结构堆(heap)会随时调整结构,使得每次的队首元素都是优先级最大的。关于这里的优先级则是规定出来的。例如上面的例子中,也可以规定转载 2021-09-03 09:30:44 · 614 阅读 · 0 评论 -
【c++容器】之map/ multimap
1、map基本概念简介: map中所有元素都是pair pair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值) 所有元素都会根据元素的键值自动排序 本质: map/multimap属于关联式容器,底层结构是用二叉树实现。 优点: 可以根据key值快速找到value值 map和multimap区别: map不允许容器中有重复key值元素【可以有重复的value值】 multimap允许容器中有重复key值元素原创 2021-04-09 15:58:45 · 3409 阅读 · 0 评论