STL
文章平均质量分 76
fsfsfsdfsdfdr
日更新一篇
展开
-
STL 迭代器
迭代器的简介迭代器类似于指针类型,它也提供了对对象的间接访问。 指针是c语言中就有的东西,迭代器是c++中才有的,指针用起来灵活高效,迭代器功能更丰富些。 迭代器提供一个对容器对象或者string对象的访问的方法,并且定义了容器范围。使用迭代器迭代器和指针不一样,容器和string有迭代器类型同时拥有返回迭代器的成员。比如,容器都有的成员begin和end,其中begin成员复制返回...转载 2018-09-10 17:15:18 · 407 阅读 · 0 评论 -
STL allocator
为了精密分工,STL allocator决定将这两阶段区分开来。内存配置由alloc:allocate()负责,内存释放由alloc::deallocate()负责; 对象建构由::construct()负责,对象析构由::destroy()负责。STL的默认内存分配器 隐藏在这些容器后的内存管理工作是通过STL提供的一个默认的allocator实现的。当然,用户也可以定制自己的alloc...原创 2018-09-13 11:18:18 · 347 阅读 · 0 评论 -
STL queue和stack基本操作
1、stackstack 模板类的定义在<stack>头文件中。stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要的,在不指定容器类型时,默认的容器类型为deque。定义stack 对象的示例代码如下:stack<int> s1;stack<string> s2;stack 的基本操作有:入栈,如例:s.pus...转载 2018-09-19 09:46:06 · 200 阅读 · 0 评论 -
STL hashmap原理及冲突解决
大家平时都用过hashMap,但是可能大家对hashMap的底层实现不太了解,同时对其中可能出现的hash冲突有些不了解,这几天我翻了下资料,也稍微了解下,记录下来,以免遗忘。上图就是一个散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数...转载 2018-09-14 09:21:18 · 3729 阅读 · 0 评论 -
Vector 自定义Sort
vector支持sort函数,但是默认是升序。如果要降序呢?那么可以这样操作: 方法一:升序排序之后,用 reverse 反转即可。方法二:重写sort第三个参数重写sort第三个参数:对于常见的数据类型,int、string等我们可以直接重写一个函数或者lambda表达式。重写函数:sort(begin(vec), end(vec), cmp);bool cmp(...原创 2018-09-15 08:45:37 · 2739 阅读 · 1 评论 -
HashMap的存储结构及原理
1、HashMap的数据结构(HashMap通过hashcode对其内容进行高速查找,是无序的) 数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组 :数组的存储区是连续的,占用内存严重,故空间复杂度非常大。但数组的二分查找时间度小;数组的特点:寻址easy,插入和删除困难。 链表 :链表的储存区离散。占用内存比較宽松。故空间复杂度非常小,但时间复杂度...转载 2018-09-28 09:17:18 · 10760 阅读 · 0 评论 -
STL中bind1st与bind2nd差异分析
bind1st和bind2nd函数把一个二元函数对象绑定成为一个一元函数对象。但是由于二元函数对象接受两个参数,在绑定成为一元函数对象时需要将原来两个参数中的一个绑定下来。也即通过绑定二元函数对象的一个参数使之成为一元函数对象的。bind1st是绑定第一个参数,bind2nd则是绑定第二个参数。bind1st(const Fn2& Func,const Ty& left); ...转载 2018-10-08 09:53:52 · 599 阅读 · 0 评论