【C++ STL库】
sugarbliss
我想要的不多,只是和多数人不一样。
展开
-
c++ stl库中begin()和end()的区别
c.begin(); 返回指向容器最开始位置数据的指针c.end(); 返回指向容器最后一个数据单元+1的指针如果我们要输出最后一个元素的值应该是 *(--c.end());set:#include <bits/stdc++.h>using namespace std;int main(){ set <int> s; s...原创 2018-07-01 11:06:03 · 32769 阅读 · 4 评论 -
STL 之 equal_range用法
equal_range是C++ STL中的一种二分查找的算法,lower_bound返回区间的第一个大于等于的迭代器,upper_bound返回区间的第一个大于的迭代器,而equal_range则是以pair的形式将两者都返回。可以用来查询有序区间数字出现的次数。#include <bits/stdc++.h>using namespace std;int main()...原创 2019-08-13 17:34:29 · 420 阅读 · 0 评论 -
STL 之 nth_element详解
C++的STL库中的nth_element()方法,默认是求区间第k小的(划重点)。举个栗子求第3小,对于 a[9]={4,7,6,9,1,8,2,3,5};nth_element(a,a+2,a+9),将下标为2,也就是第3个数放在正确的位置,求的是第3小的数a[2]。(下标从零开始)nth_element(a,a+k,a+n),函数只是把下标为k的元素放在了正确位置,对其它元素并没...原创 2019-03-01 16:30:39 · 25780 阅读 · 1 评论 -
unordered_map 和 unordered_set
unordered_mapunordered_map和map类似,都是存储的key-value的值,可以通过key快速索引到value。不同的是unordered_map不会根据key的大小进行排序,存储时是根据key的hash值判断元素是否相同,即unordered_map内部元素是无序的,而map中的元素是按照二叉搜索树存储,进行中序遍历会得到有序遍历。unordered_m...原创 2019-01-07 19:06:57 · 668 阅读 · 0 评论 -
C++ bitset用法
bitset的一些特点bitset存储二进制数,所以只能有0和1。 bitset空间占用很小——bitset中的一个元素一般只占1 bit,相当于一个char元素所占空间的八分之一。 bitset中的每个元素都能单独被访问,例如对于一个叫做 f 的bitset,表达式 f [3]访问了它的第4个元素,就像数组一样。bitset按下标输出时,是倒序的。 bitset有一个特性:整数类型...原创 2018-12-30 17:07:20 · 780 阅读 · 0 评论 -
STL中vector erase使用方法
#include<bits/stdc++.h>using namespace std;vector<int> v = {1,2,3,4,5};int main(){ auto it = find(v.begin(),v.end(),2); // v.erase(it); //删除指定元素 v.erase(v.begin(),v.begi...原创 2019-01-03 21:30:23 · 696 阅读 · 1 评论 -
vector去重
#include<bits/stdc++.h>using namespace std;int main(){ vector<int> v; cout << "please input the number of vector's element" << endl; int number; cin >>...原创 2018-12-23 15:56:15 · 760 阅读 · 0 评论 -
STL 之 deque双向队列
deque与vector一样也是顺序容器。它内部拥有更复杂的数据结构,从deque队列的两端插入和删除元素都非常快,在容器中间插入或删除则需要付出的代价非常高。deque的绝大部分操作与vector一致,如支持各种构造方式,push_back,insert,size,resize,empty,capacity等各种vector所支持的操作。并支持push_front(),pop_front()...原创 2018-12-06 20:14:36 · 320 阅读 · 0 评论 -
STL 之 list双向链表
List 容器list是C++标准模版库(STL,Standard Template Library)中的部分内容。list容器是一个双向链表,可以高效地进行插入删除元素。使用list容器之前必须加上<list>头文件:#include<list>双向链表:每一个结点都包括一个信息快Info、一个前驱指针Pre、一个后驱指针Post。可以不分配必须的内存大...原创 2018-12-06 19:11:43 · 248 阅读 · 0 评论 -
C++ 迭代器的next和prev
C++ 迭代器的next和prev迭代器的下一个或上一个分别用next()和prev()获取。#include <string>#include <iostream>#include <iterator>#include <map>using namespace std;int main() { map<int, ...原创 2018-12-06 17:56:07 · 8074 阅读 · 0 评论 -
STL中vector find使用方法
vector本身是没有find这一方法,其find是依靠algorithm来实现的。#include <iostream>#include <algorithm>#include <vector>int main(){ using namespace std; vector<int> vec; vec.pus...原创 2018-12-06 16:54:29 · 3006 阅读 · 0 评论 -
string用法总结
string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化此外,string类还支持默认构造函数和复制构造函数,如string s1;string s2="hello";都是正确的写法。当构造的string太长而无法表达时会抛出length_error异常string类的字...转载 2018-11-29 16:22:31 · 179 阅读 · 0 评论 -
c++ stl 关于map的find和count的使用
使用count,返回的是被查找元素的个数。注意:map中不存在相同元素,所以返回值只能是1或0。使用find,返回的是被查找元素的位置,没有则返回map.end()。...原创 2018-07-13 18:17:25 · 4446 阅读 · 0 评论 -
C++ STL库--map
map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。map关联容器也是采用红黑树来实现的,插入元素的键值不允许重复,比较函数只针对元素的键值进行比较,元素的各项数据可以通过键值搜索出来,map里面的元素都是有序的。 ...原创 2018-07-09 08:33:26 · 358 阅读 · 0 评论 -
c++ stl库--stack堆栈
stack堆栈是一个先进后出的线性表,插入元素只能在表的一段进行。插入元素的一端称为栈顶,另一端称为栈底。插入元素叫入栈,删除元素叫出栈。头文件是<stack>1.定义栈stack <Element> s; 2.出栈和入栈s.pop();//出栈 s.push();//入栈 3.取栈顶元素s.top(); //返回栈顶元素 4.栈中元素数量s.size();//...原创 2018-07-09 08:28:43 · 1237 阅读 · 0 评论 -
c++ stl库--queue
1.创建队列queue<int> q;//创建一个空队列 2.入队push()3.出队pop()4.读取队首元素front(),读取队尾元素back()5.判断队列是否为空empty()6.队列当前元素数目size()#include<bits/stdc++.h> using namespace std; int main() { queu...原创 2018-07-09 08:25:32 · 196 阅读 · 0 评论 -
c++ stl库--vector
头文件为#include<vector>vector向量容器不仅可以像数组一样进行随机访问,还可以在尾部插入元素,还可以与map,pair等混合使用;是一种简单高效的容器vector是表示可变大小数组的序列容器。既然是不定长数组所以可以用cin或者scanf直接输入。1.创建vector对象;(1)不指定容器的元素个数;如定义一个来存储整形的容器;vector&l...原创 2018-07-09 08:19:28 · 267 阅读 · 0 评论 -
c++ stl库--set
集合(Set)是一种包含已排序对象的关联容器。 set集合容器实现了红黑树(Red-Black Tree)的平衡二叉检索树的数据结构,在插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,它不会插入相同键值的元素,而采取忽略处理.平衡二叉树的检索使用中序遍历算法,检索效率高于vector、deque和list等容器。对于set容器中的键值,不可直接去修改!应该先删除该键值,再插入新...原创 2018-07-09 08:14:26 · 218 阅读 · 0 评论 -
STL 之 unordered_set
unordered_set与与unordered_map相似,unordered_set基于哈希表,数据插入和查找的时间复杂度很低,几乎是常数时间,而代价是消耗比较多的内存,无自动排序功能。底层实现上,使用一个下标范围比较大的数组来存储元素,形成很多的桶,利用hash函数对key进行映射到不同区域进行保存。...原创 2019-09-07 17:58:13 · 342 阅读 · 0 评论