![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STL
weixin_41318405
此人不懒,什么都留下了
展开
-
vector的内存释放
vector : C++ STL中的顺序容器,封装数组1. vector容器的内存自增长 与其他容器不同,其内存空间只会增长,不会减小。先来看看"C++ Primer"中怎么说:为了支持快速的随机访问,vector容器的元素以连续方式存放,每一个元素都紧挨着前一个元素存储。设想一下,当vector添加一个元素时,为了满足连续存放这个特性,都需要重新分配空间、拷贝元素、撤销旧空间,这样性能难...转载 2019-02-21 22:24:31 · 226 阅读 · 0 评论 -
vector迭代器失效
迭代器失效:迭代器就是把指针的一些操作进行重载,所以迭代器失效可以认为指针的失效,也即是野指针。vector是一个序列式容器,内存是连续存储的。所以如果erase一个元素,会使得后续元素向前搬移,使得迭代器失效。不够erase函数会返回被删除元素的下一个元素的迭代器。除此之外insert一个元素,也可能失效。insert分两种情况:(1)如果vector存储空间还有,也就是够一个元素插入,...原创 2019-02-21 22:57:42 · 147 阅读 · 0 评论 -
STL中常见容器排序接口详解
一、sort算法面试题:sort算法使用的是什么排序算法?稳定吗?如果回答是快速排序,答案不完整,而且还会引来一下问题:数据量大和数据量小都适合用快速排序吗? 快速排序的时间复杂度不是稳定的nlogn,最坏情况会变成n^2,怎么解决复杂度恶化问题? 快速排序递归实现时,怎么解决递归层次过深的问题? 递归过深会引发什么问题? 怎么控制递归深度?如果达到递归深度了还没排完序怎么...原创 2019-02-24 17:17:35 · 311 阅读 · 0 评论 -
序列式容器——deque
双向队列deque:vector在逻辑上我们认为只能是一端插入和删除,但是deque是两端开口,两端都可以插入和删除,如下图:vector和deque比较:vector只能在一段插入和删除,而且插入效率较低,因为如果vector当前空间不足,需要进行三部曲(找一块足够大的空间空间,搬移元素,释放旧空间),所以效率低。而deque可以在两端插入删除,并且deque完全没有扩容三部曲。 ...原创 2019-04-03 17:58:45 · 164 阅读 · 0 评论 -
std::map循环遍历删除元素出现诡异现象
std::map<int, int,cmp> m1{ { 1, 1 }, { 3, 3 }, { 2, 2 } }; m1.insert(std::make_pair(4, 4)); for (auto it = m1.begin(); it != m1.end();) { if (it->first == 3 || it->first == 2) m...原创 2019-08-26 14:32:03 · 574 阅读 · 2 评论