STL
fengying__
这个作者很懒,什么都没留下…
展开
-
2020-10-28
映射 template <class Key, class T, class Compare = less<Key>, class Alloc = allocator<pair<const Key, T> > > class map; < map > 介绍 映射是一种关联容器,元素按按顺序排列,有“键”和“值”组成。 在映射中,“键”通常用来排序而且唯一标识了一个元素,而“值”为一个“键”所关联的内容。“键”和“值”的类型可能不同,而且会被组合在原创 2020-10-28 16:33:32 · 69 阅读 · 0 评论 -
2020-10-28
集合 template <class T, class Compare = less<T>, class Alloc = allocator<T> > class set; < set > 介绍 set是按顺序存储无重复元素的容器。 在set中,一个值标志一个元素,而且每个值都是唯一的。set中元素的值不能被修改,但是可以被插入或删除。 在内部,元素会通过一个比较对象(Compare类型)来按照一个“弱排序准则”按特定顺序排列。 在通过键查找元素方面set要原创 2020-10-28 15:57:29 · 120 阅读 · 0 评论 -
2020-10-28
链表 template <class T, class allocator<T>> class list; 介绍 list是序列容器,允许在序列中的任何位置进行恒定时间的插入和擦除操作,并在两个方向上进行迭代。 list被实现为双向链表,双向链表中包括了存储在不同内存位置中的元素,每个元素中包括了上一个和下一个元素的位置的信息。 list很像forward_list,不同点是forward_list是单向链表,在forward_list中只能进行前向的迭代,作为交换,forward原创 2020-10-28 12:21:28 · 105 阅读 · 0 评论 -
2020-10-28
前向链表 template <class T, class Alloc = allocator()> class forward_list; < forward_list > forward lists是一种序列容器,其中插入和删除消耗常量时间。 forward lists被实现为单链表,单链表中的元素分布在内存中的不同位置。它们的顺序是通过每一个元素中向后一个元素的next链接维持的。 forward_list容器和list容器的主要区别是:在list中除了头元素只有向后的链接,原创 2020-10-28 12:02:22 · 71 阅读 · 0 评论 -
2020-10-27
栈 < stack > template <class T, class Container = deque<T> > class stack; 介绍 后进先出栈。栈是一种容器适配器,专门用于“后进先出”背景下的问题,它的元素从首部插入,从尾部弹出。 栈被实现为容器适配器,它们是使用特定容器类的封装对象作为其底层容器的类,提供了一组特定的成员函数来访问其元素。 元素从特定容器的“后部”被推入/弹出,这被称为栈的顶部。 底层容器可以是任一种标准容器,也可以是自定义的一种容原创 2020-10-27 21:34:10 · 79 阅读 · 0 评论 -
2020-10-27
优先队列 < queue > template <class T, class Container = vector<T>, class Compare = less<typename Container::value_type> > class priority_queue; 介绍 优先队列是一种容器适配器,它的第一个元素永远是容器中“最大的”元素,所谓“最大”是通过自定义的某个准则(弱排序准则)排出的。 就像堆一样,可以随时插入元素,但是只能获取最大元素原创 2020-10-27 21:16:25 · 96 阅读 · 0 评论 -
2020-10-27
Queue 队列 template <class T, class Container = queue<T>> class queue; 介绍 先进先出队列。queues是一种容器适配器,专门被用来解决在“先进先出”背景下的问题:它从尾部添加元素,从首部删除元素。 queues被实现为容器适配器,它们是使用特定容器类的封装对象作为其基础容器的类,提供了一组特定的成员函数来访问其元素。 元素被推入特定容器的“后部”,并从其“前部”弹出。 底层的容器可能是一种标准模板类容器,也可能是专原创 2020-10-27 20:44:52 · 73 阅读 · 0 评论 -
2020-10-27
std::deque 双端队列 template <class T, class alloc = allocator<T>> class deque; 介绍 双端队列(deque)是有两个尾部的队列(double-ended-queue)的缩写。它是一个尺寸可变的线性序列的容器,可在两端进行扩张或缩减。 特定的库可能将双端队列用在特定场合,通常是用作动态的数组。但是在某些场景,它允许通过迭代器对元素进行随机读取,同时根据需要通过扩张或缩减来动态的管理存储。 因此,它在功能上与vec原创 2020-10-27 20:20:51 · 101 阅读 · 0 评论 -
2020-10-26
STL array template <class T, size_t N> array; 介绍 arrays是固定的s序列容器,它盛放特定数目的按现行顺序排列的序列。 在内部,arrays的成员只s有它盛放的元素,(甚至没有它的尺寸,这是在编译时就固定下来的)就存储的尺寸而言,它与用标准语法[]声明的数组一样有效,这个类仅仅对它添加了一层成员和全局函数,因此可被用作标准容器。 不像其他的标准容器,arrays有一个固定的尺寸而且不适用分配器来管理元素的内存分配:它们是合并的类型包含在一个固定原创 2020-10-26 21:33:03 · 132 阅读 · 0 评论 -
STL vector
c++ vector概念和相关操作 最近开始系统学习c++标准库,以及练习写博客。先从翻译STL文档开始,加入了自己的一点理解,大概会有一些错误,日后逐渐修正。 概念 vector是盛放序列的容器,是一种尺寸可变的数组。像数组一样,vector使用连续的内存空间来存放元素,这意味着可以使用平常的指针偏置来读取元素,能像数组一样高效。但不同于数组的是,vector可以动态改变大小。 在内部,vector使用一个动态分配的数组来存储元素,当数组已满且需要插入新元素时,vector会重新分配一个新的更大空间的数组原创 2020-10-25 21:43:26 · 154 阅读 · 0 评论