STL
stl
红鱼鱼
这个作者很懒,什么都没留下…
展开
-
c++优先级队列(priority_queue)使用总结
1.优先级队列简介优先级队列(priority_queue)是一种容器适配器,默认基础容器为数组vector,使用时需要包含头文件<queue>。其内部基于堆结构实现,关于堆结构的介绍可以看这里。理解了堆之后也就能理解优先级队列的原理,以及为什么使用vector作为默认基础容器,不过不了解堆结构也不影响优先级队列的使用。优先队列是0个或多个元素的集合,每个元素都有一个优先权或值,对优先队列执行的操作有1) 查找;2) 插入一个新元素;3) 删除.在最小优先队列中,最小元素原创 2020-07-02 16:46:16 · 2733 阅读 · 0 评论 -
只是一篇超详细的c++ list用法总结罢了
1.简介list是一个线性双向链表结构,它的数据由若干个节点构成,每一个节点都包括一个信息块(即实际存储的数据)、一个前驱指针和一个后驱指针。使用时需要包含头文件<list>。 它无需分配指定的内存大小且可以任意伸缩,这是因为它存储在非连续的内存空间中,并且由指针将有序的元素链接起来。由于其结构的原因,list随机检索的性能非常的不好,因为它不像vect...原创 2020-04-13 18:12:19 · 1061 阅读 · 3 评论 -
c++ queue(队列)使用指南
1.deque简介queue和stack类似,是STL中的容器适配器,它们并不是容器,而是基于其他容器实现。那么什么叫容器适配器呢,大家可以想一想电源适配器,没错就是下面这个:它能直接给手机充电吗?当然不能,那是它可以将电源转化为手机能够适应的电压。容器这里就相当于电源,容器适配器对容器的接口进行封装,以达到我们需要的要求。queue的原理和操作十分简单,即先进先出原则,即只能从队...原创 2020-04-12 21:39:32 · 1379 阅读 · 1 评论 -
c++ deque(双端队列)使用指南
1.容器简介deque是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。其操作示意图如下:相比于vector,deque没有容量的概念,因为它是动态的以分段连续空间组合而成,随时可以增加一段新的空间并链接起来,换句话说,像 vector 那样,”旧空间不足而重新配置一块更大空间,然后复制元素,再释放旧空间”这样的事情在 deque ...原创 2020-04-11 22:08:11 · 1602 阅读 · 1 评论 -
c++ stack(栈)的使用指南
栈的内容不多,使用也相对简单,只需要遵守一个原则,就是先进后出。最后加入栈的元素将最先被取出来,在栈的同一端进行数据的插入与取出,这一段叫做“栈顶”。使用STL的stack需要include一个头文件<stack>容器适配器:首先我们要明白stack其实是一种容器适配器,它和容器是不一样的。像vector,deque这种称为容器,而容器适配器只是提供了相关接口,内部使用的还是别...原创 2020-04-10 22:00:39 · 1502 阅读 · 1 评论 -
只是一篇超详细的c++ set用法总结罢了
set是STL中一种标准关联容器,它底层使用平衡的搜索树——红黑树实现。使用时需要包含头文件<set>。set在插入数据时会自动对数据进行排序,set中的元素不能重复,与此相对应的multiset中的元素可用重复。不能通过set的迭代器改变元素值,也不能通过[ ]的方式访问元素,其迭代器没有+1,-1的操作,。myset.begin()//指向myset第一个元素的迭代器...原创 2020-03-22 14:16:49 · 3193 阅读 · 4 评论 -
c++ nth_element用法
nth_element实际上就是快速选择算法的实现,快速选择算法实现原理具体见这里。void nth_element (Iterator first, Iterator first+nth, Iterator last, Compare comp);重新排列range[first,last)中的元素,使第n个位置的元素是按排序顺序在该位置的元素。其他元素没有任何特定的顺序,只是第n个元...原创 2020-03-20 11:41:00 · 3073 阅读 · 0 评论 -
c++ sort与stable_sort的区别与自定义排序的使用
sort的实现是基于快速排序的,快速排序在比较算法中算是速度最快的,平均的时间复杂度为O(nlogn),虽然它的最差时间复杂度可能达到O(n2)。stable_sort的实现是基于归并排序的,它的时间复杂度为O(nlogn),一般情况下,它比快速排序稍慢。但是它是一种稳定排序,所谓稳定排序,就是说相同大小的元素,在排序前后的相对位置不会发生改变。即相同大小的元素中,原来在前的元素,排序之后还是...原创 2020-02-28 12:16:23 · 1839 阅读 · 0 评论 -
c++中int与char,string的相互转换
1.ASCLL表图中包含的可显示字符不一定全,比如在vs2017中,ASCLL码为1的字符也是可以打印的(意外发现)。这里我们主要关注的是0-9对应的ASCLL码值为48-57.2.char转int在char类型字符相减时,结果会自动转为int型:char a = '1';cout << typeid(a - '0').name() << end...原创 2020-02-23 21:16:46 · 1767 阅读 · 0 评论 -
c++中map和unordered_map的差别和使用
需要引入的头文件不同map: #include < map >unordered_map: #include < unordered_map >内部实现机理不同map: map内部实现了一个红黑树(红黑树是非严格平衡二叉搜索树,而AVL是严格平衡二叉搜索树),红黑树具有自动排序的功能,因此map内部的所有元素都是有序的,红黑树的每一个节点都代表着map的一个元...转载 2020-02-22 18:15:27 · 233 阅读 · 0 评论 -
c++ string超详细总结
构造函数:string s1(""); // si = ""string s2("Hello"); // s2 = "Hello"string s3(4, 'K'); // s3 = "KKKK"string s4("12345", 1, 3); //s4 = "234",即 "12345" 的从下标 1 开始,长度为 3 的子串赋值:string s1;s1...原创 2020-02-22 14:46:51 · 2313 阅读 · 8 评论 -
c++ 使用map导致死循环的坑
(1)leetcode里1346题给你一个整数数组 arr,请你检查是否存在两个整数 N 和 M,满足 N 是 M 的两倍(即,N = 2 * M)。更正式地,检查是否存在两个下标 i 和 j 满足:i != j 0 <= i, j < arr.length arr[i] == 2 * arr[j]class Solution {public: bool ...原创 2020-02-21 22:08:58 · 1571 阅读 · 0 评论 -
c++ STL map使用详细总结
对组对组(pair)是将两个值合成一个值,这两个值可以具有不同的数据类型,可以分别pair的两个公有函数first和second访问。类模板:template<class T1,class T2>struct pair.对组的创建有三种方法:pair<string,int>pair1(string("name"),20);pair<string,i...原创 2020-02-15 11:29:35 · 2065 阅读 · 6 评论 -
c++中vector[]和vecter.at()的区别
我们先定义一个数组vector<int>v(10),v[]和v.at()都可以对v中元素进行访问,一般大家使用的都是v[]这种访问方法,以至于我一度都将v.at()这种访问方式忘记了。不过这两种访问元素的方式有什么区别呢?.v[]和v.at()都可以对v中元素进行访问,并且访问的元素时都不能越界,比如a[10]或a.at(10)这样的使用会报错。区别在于,operator[]不做边...原创 2020-02-13 13:44:33 · 8728 阅读 · 1 评论 -
vector.size()导致死循环的坑
首先我是在for循环中遇到的这个问题:for(int i=0;i<vector.size()-1;i++){ xxx}当vector为空时,即vector.size为0时,按道理应该不会进入循环,不过实际中代码会进入for语句中并且产生死循环。我把代码作如下修改之后就不会进入for循环:int s=vector.size()-1for(int i=0;i&l...原创 2020-02-05 11:59:52 · 2611 阅读 · 3 评论 -
C++ STL vector使用总结
vector是C++标准模板库中的部分内容,中文偶尔译作“容器”。它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。使用时需要包含头文件<vector>。1.vector初始化1.1vector初始化主要有三种方法。(1)vector <type> a; 不初始化容器(本文就容...原创 2020-02-07 18:48:07 · 703 阅读 · 2 评论