
stl
文章平均质量分 96
冰室晨也
这个作者很懒,什么都没留下…
展开
-
STL 中的迭代器失效的问题
C++ STL 库中的容器迭代器相信大家都不陌生,用一个迭代器遍历一个容器的通用做法如下:vector<int>::iterator it = vec.begin();for(; it!=vec.end(); ++it){cout<<*it<<" ";}cout<<endl;那么容器的迭代器什么时候就失效了呢?请看如下的两个例子...原创 2019-08-03 22:34:57 · 188 阅读 · 0 评论 -
map&set 容器的实现原理
C++ STL 的 set 和 map 容器底层都是由红黑树来实现的,因此 map 和 set 的实现原理就是红黑树的实现原理,其中 map 是用来存储键值映射对的,它把【key,value】打包成pair 对象存储在红黑树结构上,元素都是经过排序的,因此可以在 O(log2n)的时间复杂度内对 set 和 map 进行增删查操作,效率非常高。对于红黑树的阐述,以下罗列一些基本信息,更详细的红黑...原创 2019-08-03 22:30:45 · 1243 阅读 · 0 评论 -
实现简单的Vector容器
#include<iostream>#include<stack>using namespace std; template<typename _Ty> //模板使得开辟的空间由传入的值类型决定class Vector{public: typedef _Ty value_type; //首先呢我们定义一下值类型public: Vecto...原创 2019-08-14 10:38:38 · 149 阅读 · 0 评论 -
vector和list的区别
(1)vector的底层实现是数组;而list的底层实现是双向链表。 (2)vector的内存的空间时连续的;而list的内存空间时不连续的。 (3)vector支持数据的随机访问;而list不支持数据的随机访问。 (4)vector在插入时如果空间不够才会自动申请新的空间的扩容,但容器中数据删除时不会释放空间;而list在每次插入和删除都会申请和释放空间。 (5)vector在数据的插入...原创 2019-09-03 12:50:54 · 482 阅读 · 0 评论 -
vector和deque的区别
(1)vector的底层实现时数组;而deque的底层实现时“中央控制区”和缓冲的结构。 (2)vector的内存空间时连续的;而deque的内存空间是一种假的连续,实际上是不连续的。 (3)vecotr的支持数组的随机访问;而deque虽然也是支持使用[]的运算符,但实际上是需要通过中央控制器二次寻址的,效率比vector略低。 (4)vector在空间不够重新申请新空间策略是先申请一块比...原创 2019-09-03 12:52:46 · 2449 阅读 · 0 评论 -
容器容量和容器大小(capacity和size)
(1)容器容量:容器所能容纳元素的个数,通常大于容器的实际存储元素的个数。s.capacity();//查看容器容量s.reserve(len);//扩展当前容器的容量,如果len大于当前容器容量,那么将会将容器的容量扩展为len,且不会对新扩展的空间进行初始化;当len小于等于当前容器容量时,什么也不做。(2)容器大小:容器中当前存在元素的个数。s.size();//查看当前...原创 2019-09-03 12:56:47 · 6320 阅读 · 0 评论 -
STL简介
STL(Standard Template Library),即标准模板库。该库提供了常用的数据结构和算法。STL三种基本组件:1、容器(container):容器是容纳、包含一组元素的对象。容器类库包括7种基本容器:向量(vector)、双端队列(deque)、列表(list)、集合(set)、多重集合(multiset)、映射(map)和多重映射(multimap)。其中容器又分为顺序...原创 2019-09-05 18:51:37 · 714 阅读 · 1 评论