STL
Mr_John_Liang
这个作者很懒,什么都没留下…
展开
-
STL中map用法详解
Map mapStudent;1. map的构造函数map共提供了6个构造函数,这块涉及到内存分配器这些东西,略过不表,在下面我们将接触到一些map的构造方法,这里要说下的就是,我们通常用如下方法构造一个map:Map mapStudent;2. 数据的插入在构造map容器后,我们就可以往里面插入数据了。这里讲三种插入数据的方法:第一种:用inser转载 2013-07-05 17:48:28 · 554 阅读 · 0 评论 -
STL string的内存释放
随着用string越来越多,有的时候你会发现string的内存管理的问题,存在内存暂时泄露的问题。这个内存泄露与我们常规说的内存泄露问题不一样。它部是真的内存泄露,在程序结束的时候,内存还是会释放掉的,但是在程序的运行过程中,内存被string对象占用着。比如你有个string对象保存了一个比较大的网页,用完了之后,你想通过clear来回收这个对象的内存,你这样是做不到的。因为string转载 2014-02-26 18:28:02 · 14177 阅读 · 1 评论 -
关于 std::set/std::map 的几个为什么
std::set/std::map (以下用 std::map 代表) 是常用的关联式容器,也是 ADT(抽象数据类型)。也就是说,其接口(不是 OO 意义下的 interface)不仅规定了操作的功能,还规定了操作的复杂度(代价/cost)。例如 set::insert(iterator first, iterator last) 在通常情况下是 O(N log N),N 是区间的长度;但是如果转载 2013-11-29 14:34:40 · 705 阅读 · 0 评论 -
关于c++中map的内存占用问题
研究了下c++中map的内存占用情况。很多人说map中的erase以及clear不能释放内存,这几天实验了下,这个说法是不确切的,较为准确的说法应该是,map中的erase以及clear,不能,“马上”释放内存。map有自己的机制回收内存,用erase以及clear之后,如果没有特殊需求,可以认为那部分内存已经释放了。map不会马上释放删掉内容的内存,而是会对内存进行“预留”,如果确实很长时间用不转载 2013-11-29 14:33:37 · 11339 阅读 · 0 评论 -
STL—vector删除重复元素
STL提供了很多实用的算法,这里主要讲解sort和unique算法。 删除重复元素,首先将vector排序。sort( vecSrc.begin(), vecSrc.end() ); 然后使用unique算法。 vecSrc.erase( unique( vecSrc.begin(), vecSrc.end() ), vecSrc.end() );unique返回值是重转载 2013-09-12 09:37:50 · 1875 阅读 · 0 评论 -
Stl--Vector
第一部分使用入门vector可用于代替C中的数组,或者MFC中的CArray,从许多说明文档或者网上评论,一般一致认为应该多用vector,因为它的效率更高,而且具备很好的异常安全性。而且vector是STL推荐使用的默认容器,除非你知道你有特殊需要,使用vector不能满足你的需求,例如需要容器在head和tail高效的插入和删除,或者在任何位置高效的删除和插入操作,那么你可能使用deque转载 2013-08-27 09:22:32 · 624 阅读 · 0 评论 -
STL容器:vector
1. 概念 vector是一种序列式容器,所谓序列式容器,即其中的元素可以排序,但是并未排序。可以把vector可作为加强版的array,它和array一样,存储空间是一段连续的内存,因此支持随机访问,但是,和array相比,vector支持动态增加数据。vector支持动态增加数据,同时又需要保持空间的连续性从而支持随机访问,因此,在对vector动态增加元素时,如果旧有空间装满,需转载 2013-08-27 09:19:32 · 655 阅读 · 0 评论 -
STL中vector、list、deque和map的区别
1 vector 向量 相当于一个数组 在内存中分配一块连续的内存空间进行存储。支持不指定vector大小的存储。STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacituy()函数返回的大小,当超过此分配的空间时再整体重新放分配一块内存存储,这给人以vector可以不指定vector即一个连续内存的大小的感觉。通常此默认的内存分配能完成大部分情况下的存储。转载 2013-08-26 17:02:46 · 659 阅读 · 0 评论 -
STL中map用法详解
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有转载 2013-08-22 10:56:37 · 520 阅读 · 0 评论 -
STL中各个容器的内存的释放
1.vector总是不会释放内存删除向量容器的元素时,并不会使空闲的空间被释放,这时可以使用下面的语句达到释放多余空间的目的( s 表示目的容器,T表示容器的元素类型):vector(s.begin(), s.end(), swap(s));即首先用 s 的内容创建一个临时的向量容器对象,再将该容器和 s 交换,这时 s 原先占有的空间已经属于临时对象,该语句执行完成后原创 2014-03-06 16:39:09 · 7314 阅读 · 0 评论