STL
文章平均质量分 68
心心知忆
这个作者很懒,什么都没留下…
展开
-
算法库-二分查找操作
文章目录lower-bound --- 返回指向第一个不小于给定值的元素的迭代器(>= x)upper_bound --- 返回指向第一个大于给定值的元素的迭代器( > x)binary_search --- 确定元素是否存在于某范围中equal_range --- 返回匹配特定键值的元素范围c++20定义于头文件 < algorithm >lower-bound — 返回指向第一个不小于给定值的元素的迭代器(>= x)template< class Forwar原创 2021-03-04 20:41:36 · 123 阅读 · 1 评论 -
算法库-排序操作
文章目录is_sorted --- 检查范围是否已按升序排列partial_sort --- 排序一个范围的前 N 个元素partial_sort_copy --- 对范围内的元素进行复制并部分排序stable_sort --- 将范围内的元素排序,同时保持相等的元素之间的顺序运行效果nth_element -- 将给定的范围部分排序,确保其按给定元素划分头文件:is_sorted — 检查范围是否已按升序排列template< class ExecutionPolicy, class Forw原创 2021-03-04 19:15:02 · 145 阅读 · 1 评论 -
最大/最小操作
iota头文件< numeric >用从起始值开始连续递增的值填充一个范围函数void iota( ForwardIt first, ForwardIt last, T value );以始于 value 并重复地求值 ++value 的顺序递增值填充范围 [first, last) 。代码演示#include<iostream>#include<vector>#include<cstdio>#include<string>原创 2021-02-09 11:03:43 · 410 阅读 · 1 评论 -
算法库-排列操作
is_permutation()判断一个序列是否为另一个序列的排列头文件< algorithm >函数constexpr bool is_permutation( ForwardIt1 first1, ForwardIt1 last1,ForwardIt2 first2, ForwardIt2 last2 );若存在范围 [first1, last1) 中元素的排列,使得该范围等于 [first2,last2) ,则返回 true ,若不给出,则其中 last2 代表 first原创 2021-02-09 09:19:42 · 106 阅读 · 0 评论 -
优先队列priority_queue
template <typename T, typename Container=std::vector<T>, typename Compare=std::less<T> >class priority_queue{ //......}可以看到,priority_queue 容器适配器模板类最多可以传入 3 个参数,它们各自的含义如下:typename T:指定存储元素的具体类型;typename Container:原创 2021-02-08 22:22:17 · 564 阅读 · 0 评论 -
queue
其实,STL queue 容器适配器模拟的就是队列这种存储结构,因此对于任何需要用队列进行处理的序列来说,使用 queue 容器适配器都是好的选择#include <queue>using namespace std;成员函数功能empty()如果 queue 中没有元素的话,返回 true。size()返回 queue 中元素的个数。front()返回 queue 中第一个元素的引用。如果 queue 是常量,就返回一个常引用;如果 queue 为原创 2021-02-08 21:52:52 · 73 阅读 · 0 评论 -
stack
#include <stack>using namespace std;创建一个不包含任何元素的 stack 适配器,并采用默认的 deque 基础容器:std::stack<int> values;表 1 stack容器适配器支持的成员函数成员函数功能empty()当 stack 栈中没有元素时,该成员函数返回 true;反之,返回 false。size()返回 stack 栈中存储元素的个数。top()返回一个栈顶元素的引用原创 2021-02-08 21:44:52 · 176 阅读 · 1 评论 -
2021-02-07
#include<iostream>#include<vector>#include <set>#include<cstdio>#include<string>using namespace std;set<string> initSet() { set<string> myset{"11", "22", "33"}; return myset;}void output(set<s.原创 2021-02-07 16:56:57 · 73 阅读 · 0 评论 -
map
作为关联式容器的一种,map 容器存储的都是 pair 对象,也就是用 pair 类模板创建的键值对。其中,各个键值对的键和值可以是任意数据类型,包括 C++ 基本数据类型(int、double 等)、使用结构体或类自定义的类型。通常情况下,map 容器中存储的各个键值对都选用 string 字符串作为键的类型。与此同时,在使用 map 容器存储多个键值对时,该容器会自动根据各键值对的键的大小,按照既定的规则进行排序。默认情况下,map 容器选用std::less排序规则(其中 T 表示键的数据类型),原创 2021-02-07 15:51:27 · 163 阅读 · 0 评论 -
pair
考虑到“键值对”并不是普通类型数据,C++ STL 标准库提供了 pair 类模板,其专门用来将 2 个普通元素 first 和 second(可以是 C++ 基本数据类型、结构体、类自定的类型)创建成一个新元素<first, second>。通过其构成的元素格式不难看出,使用 pair 类模板来创建“键值对”形式的元素,再合适不过。注意,pair 类模板定义在**< utility >** 头文件中,所以在使用该类模板之前,需引入此头文件。另外值得一提的是,在 C++ 11 标准原创 2021-02-07 09:59:20 · 83 阅读 · 0 评论 -
STL-容器库
vector可改变大小数组.支持快速随机访问.在尾部之外的位置插入和删除会很慢.stringarraydequelistforward_list原创 2021-02-07 00:08:02 · 105 阅读 · 0 评论 -
forward_list
forward_list 容器具有和 list 容器相同的特性,即擅长在序列的任何位置进行插入元素或删除元素的操作,但对于访问存储的元素,没有其它容器(如 array、vector)的效率高。另外,由于单链表没有双向链表那样灵活,因此相比 list 容器,forward_list 容器的功能受到了很多限制。比如,由于单链表只能从前向后遍历,而不支持反向遍历,因此 forward_list 容器只提供前向迭代器,而不是双向迭代器。这意味着,forward_list 容器不具有 rbegin()、rend()原创 2021-02-07 00:03:37 · 1638 阅读 · 0 评论 -
array
array 容器是 C++ 11 标准中新增的序列容器,简单地理解,它就是在 C++ 普通数组的基础上,添加了一些成员函数和全局函数。在使用上,它比普通数组更安全(原因后续会讲),且效率并没有因此变差。和其它容器不同,array 容器的大小是固定的,无法动态的扩展或收缩,这也就意味着,在使用该容器的过程无法借由增加或移除元素而改变其大小,它只允许访问或者替换存储的元素。array 容器以类模板的形式定义在 头文件,并位于命名空间 std 中初始化std::array<double, 10&g原创 2021-02-06 23:54:17 · 615 阅读 · 0 评论 -
vector
文章目录empty()sizemax_sizeresizeinsertcapacity()empty()函数bool empty()功能检查容器是否无元素,即是否 begin() == end() 。参数(无)返回值若容器为空则为 true ,否则为 falsesize返回容纳的元素数max_size返回可容纳的最大元素数resize功能: 改变容器中可存储元素的个数 .重设容器大小以容纳 count 个元素。若当前大小大于 count ,则减小容器为其首 count 个元原创 2021-02-06 19:46:27 · 273 阅读 · 0 评论 -
deque
eque 是 double-ended queue 的缩写,又称双端队列容器。前面章节中,我们已经系统学习了 vector 容器,值得一提的是,deque 容器和 vecotr 容器有很多相似之处,比如:deque 容器也擅长在序列尾部添加或删除元素(时间复杂度为O(1)),而不擅长在序列中间添加或删除元素。deque 容器也可以根据需要修改自身的容量和大小。和 vector 不同的是,deque 还擅长在序列头部添加或删除元素,所耗费的时间复杂度也为常数阶O(1)。并且更重要的一点是,deque原创 2021-02-06 22:10:21 · 594 阅读 · 0 评论 -
list
STL list 容器,又称双向链表容器,即该容器的底层是以双向链表的形式实现的。这意味着,list 容器中的元素可以分散存储在内存空间里,而不是必须存储在一整块连续的内存空间中。可以看到,list 容器中各个元素的前后顺序是靠指针来维系的,每个元素都配备了 2 个指针,分别指向它的前一个元素和后一个元素。其中第一个元素的前向指针总为 null,因为它前面没有元素;同样,尾部元素的后向指针也总为 null。基于这样的存储结构,list 容器具有一些其它容器(array、vector 和 deque)所不原创 2021-02-06 23:26:47 · 106 阅读 · 0 评论