![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
标准库stl及boost库
文章平均质量分 79
cws1214
这个作者很懒,什么都没留下…
展开
-
erase删除后移动元素改进算法
vector中的erase方法效率是很低的,因为为了保持vector中元素在内存空间中的连续性,在删除某个元素之后,需要将其后的元素依次向前移动一个位置,平均复杂度为o(n)。gcc 下erase的实现如下:iterator erase(iterator position) { if (position + 1 != end()) copy(positi转载 2012-11-22 13:01:14 · 892 阅读 · 2 评论 -
map与multimap区别,find具体使用
一. Map与 Multimap 特点Map 和 Multimap 将(key/value) 一组当做元素,它们可以根据 key 的排序准则自动将元素排序。Multimap允许重复元素,map不允许重复。类型定义:[cpp] view plaincopytypedef std::mapfloat, std::g转载 2012-11-22 13:09:19 · 14696 阅读 · 4 评论 -
STD map易错之下标插入元素
ps:map下标操作,对于不存在改索引值的索引值,会将该值和次数插入 std::map不是顺序容器,这应该都知道的,map中重载了operator []操作符,可以用map的键值索引到相关的数据,但是这个[]和一般数组的[]可不一样。有的人又认为既然[]就是利用下标做索引和std::map中的find用键值索引是不是一样的,所以有的会写出下面类似的代码:std::map map转载 2012-11-22 13:00:52 · 1488 阅读 · 0 评论 -
boost库内存池使用
内存池(Memory Pool)是一种内存分配方式。 通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存转载 2013-07-31 11:25:57 · 3128 阅读 · 0 评论 -
stl hashtable
一句话之Hashtable:哈希表(散列表)能通过键值对数据进行访问的数据结构;其在C++0X标准中未出现,可能是考虑到哈希表效率低下,出于其广泛用于工程中,C++11将其纳入了标准库。C++11的新特性:http://en.wikipedia.org/wiki/C%2B%2B11,C++11中哈希表的说明:http://en.wikipedia.org/wiki/C%2B%2B11#Hash_t转载 2013-08-08 22:17:55 · 3733 阅读 · 0 评论 -
stl hashmap与map hashmap与hashtable
STL map常用操作简介1。目录map简介 map的功能 使用map 在map中插入元素 查找并获取map中的元素 从map中删除元素 2。map简介map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。3。map的功能自动建立Key - value的对转载 2013-08-08 22:16:09 · 16972 阅读 · 1 评论 -
vector的内部实现
假定你现在已经能熟练使用vector,如果你很好奇vector背后是怎么实现的,那么本文或许对你能有所帮助。 vector代表了c++的动态数组,大小是动态可增长的。你不必考虑自己手动分配或释放内存,也不必担心内存泄漏,vector帮你做了这一切。vector的使用很简单,但是要做到有效率,没那么容易,了解他背后的实现原理能帮助达到这一目的。 言归正传。本文基于SGI STL的一个v转载 2013-08-13 19:13:39 · 1377 阅读 · 0 评论 -
Boost 库中的实用工具类使用入门
实用工具类(utility classes)在几乎任何适当规模的 C++ 项目中都是必需的,但是不存在满足此需求的标准方法。通常,团队根据他们的需求编写实用工具类代码,但是由于缺少重要的接口信息,使得相同组织中的其他项目团队无法重用那些类。建议的标准模板库(Standard Template Library,STL)只具有诸如 hash、stack 和 vector 等少数基本类,因此无法有效地用转载 2013-09-23 15:05:50 · 1020 阅读 · 0 评论 -
vector 避免内存频繁分配释放与手动释放vector内存
1.避免频繁重分配关于STL容器,最令人称赞的特性之一就是是只要不超过它们的最大大小,它们就可以自动增长到足以容纳你放进去的数据。(要知道这个最大值,只要调用名叫max_size的成员函数。) 对于vector和string,如果需要更多空间,就以类似realloc的思想来增长大小。这个类似于realloc的操作有四个部分:分配新的内存块,它有容器目前容量的倍数。在转载 2015-08-25 21:27:57 · 13600 阅读 · 2 评论