(C++系列03)C++标准模板库(STL)
文章平均质量分 80
成都fly
这个作者很懒,什么都没留下…
展开
-
关联容器(一):set
set介绍:set是STL中一种标准关联容器(vector,list,string,deque都是序列容器,而set,multiset,map,multimap是标准关联容器),它底层使用平衡的搜索树——红黑树实现,插入删除操作时仅仅需要指针操作节点即可完成,不涉及到内存移动和拷贝,所以效率比较高。set,顾名思义是“集合”的意思,在set中元素都是唯一的,而且默认情况下会对元素自动进行升序排原创 2015-12-08 21:41:58 · 347 阅读 · 0 评论 -
关联容器(二):mutiset
mutiset介绍:红黑树,关联容器类,自动根据key值排序,和set类似,但集合中元素可以重复。常用函数:(1) 构造函数/赋值int array[] = { 1121, 3434, 34, 4, 34343, 5566, 788 };//multiset setInt = { 1121, 3434, 34, 4, 34343, 5566, 788 }; //默认:原创 2015-12-08 22:00:33 · 949 阅读 · 0 评论 -
容器(二):队列容器Vector
vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此 它能非常好的支持随机存取,即[]操作符,但由于它的内存空间是连续的,所以在中间 进行插入和删除会造成内存块的拷贝,另外,当该数组后的内存空间不够时,需要重新 申请一块足够大的内存并进行内存的拷贝。这些都大大影响了vector的效率。迭代器:vector::iterator it原创 2015-12-07 12:34:58 · 540 阅读 · 0 评论 -
容器Vector,List,Deque,Map,Set区别
1.list, vector, map, set 区别与用法比较参考链接:https://www.cnblogs.com/smiler/p/4457622.htmlList封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]。Vector对于随机访问的速度很快,但是对于插...转载 2015-12-07 14:10:08 · 447 阅读 · 0 评论 -
容器(三):队列容器Deque
Deque介绍:deque是一个double-ended queue,它具有以下两个特点: 它支持[]操作符,也就是支持随即存取,并且和vector的效率相差无几;它支持在两端的操作:push_back,push_front,pop_back,pop_front等,并且在两端操作上与list的效率 也差不多。特点:顺序容器类,象vector,也支持快速在容器最前面插原创 2015-12-07 13:45:23 · 311 阅读 · 0 评论 -
容器(一):队列容器List
list容器介绍相对于vector容器的连续线性空间,list是一个双向链表,它有一个重要性质:插入操作和删除操作都不会造成原有的list迭代器失效,每次插入或删除一个元素就配置或释放一个元素空间。也就是说,对于任何位置的元素插入或删除,list永远是常数时间。区别与其他队列容器(Vector,List,Deque):list就是数据结构中的双向链表(根据sgi stl源代码),因此它的内存空...原创 2015-12-05 22:15:47 · 480 阅读 · 0 评论 -
顺序容器(四):string
之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。标准模板库(STL)提供了一个std::string类原创 2015-12-07 15:11:29 · 374 阅读 · 0 评论 -
关联容器(三):map
map介绍:关联容器类,红黑树,默认按key升序排序,集合中每个元素是一个key、value对,key唯一,可通过key快速得到对应的value。常用函数:(1) 构造函数/赋值map(); // 默认构造函数map(const map& m) // 拷贝构造函数map(iterator begin, iterator end ); //区间构造函数m原创 2015-12-09 22:22:25 · 281 阅读 · 0 评论 -
关联容器(六):unordered_set
不排序的关联容器类,key和value为相同值,集合中每个key 都是唯一的。支持forward迭代器。常用函数参考链接:http://www.howsoftworks.net/cplusplus.api/std/indexunordered_set.html转载 2015-12-12 11:12:55 · 273 阅读 · 0 评论 -
STL容器介绍及比较
本文转载自:http://www.cnblogs.com/duzouzhe/archive/2010/01/12/1645191.htmlSTL的容器可以分为以下几个大类: 一:序列容器, 有vector, list, deque, string.二 : 关联容器, 有set, multiset, map, mulmap, hash_set, hash_map, h原创 2015-12-07 15:35:23 · 271 阅读 · 0 评论 -
容器适配器(Adapter):stack,queue,priority_queue
容器适配器思想,参考帖子:http://bbs.csdn.net/topics/310196740adapter原意是插座、适配器、接合器的意思。现在我需要一个栈结构,我们可以用deque来实现,只在一端进行元素插入和弹出,另一端不动。这说明deque可以用作一个栈结构,但它又不能直接地严格地满足你的要求,因为你不能防止别人在另一端乱动你的东西。你需要对它进行一些包装,作一些限制,使之只能在一转载 2015-12-12 13:48:47 · 496 阅读 · 0 评论 -
关联容器(八):unordered_multimap
不排序的关联容器类,key不需要唯一。支持forward迭代器。常用函数参考链接:http://www.howsoftworks.net/cplusplus.api/std/indexunordered_multimap.html转载 2015-12-12 11:15:50 · 317 阅读 · 0 评论 -
关联容器(四):multimap
multimap介绍:关联容器类,集合中每个元素是一个key、value对,key不需要唯一,可通过key快速得到对应的value。相对于MAP:KEY可以重复,不能at和[]下标访问。常用函数:(1) 构造函数/赋值multimap(); // 默认构造函数multimap(const map& m) // 拷贝构造函数multimap(iter转载 2015-12-12 09:46:25 · 337 阅读 · 0 评论 -
关联容器(七):unordered_multiset
不排序的关联容器类,key和value为相同值,key不需要唯一。支持forward迭代器。常用函数参考链接:http://www.howsoftworks.net/cplusplus.api/std/indexunordered_multiset.html转载 2015-12-12 11:14:14 · 1242 阅读 · 0 评论 -
关联容器(五):unordered_map
介绍:哈希map是一种关联容器,通过键值和映射值存储元素。允许根据键值快速检索各个元素。在内部unordered_map的元素不以键值或映射的元素作任何特定的顺序排序,其存储位置取决于哈希值,unordered_map容器比map容器更快地通过键值访问他们的单个元素(hash表的思想,以空间换时间),类似下图:(键,值)对是插入的数据;索引即对应桶(Bucket);哈希转载 2015-12-12 10:39:12 · 4672 阅读 · 0 评论 -
c++中的explicit关键字
explicit关键字很少使用,但在STL源文件中使用较多。explicit的作用:主要为了限制默认构造函数的调用,引发未知的错误。示例:class Testclass{public: Testclass(); explicit Testclass(int first, int second = 2); ~Testclass();private:};Tes原创 2017-03-08 11:27:15 · 625 阅读 · 0 评论