1. vector, 变长数组,倍增的思想
  2. size() 返回元素个数
  3. empty() 返回是否为空
  4. clear() 清空
  5. front()/back()
  6. push_back()/pop_back()
  7. begin()/end()
  8. []
  9. 支持比较运算,按字典序
  10.  
  11. pair<int, int>
  12. first, 第一个元素
  13. second, 第二个元素
  14. 支持比较运算,以first为第一关键字,以second为第二关键字(字典序)
  15.  
  16. string,字符串
  17. size()/length() 返回字符串长度
  18. empty()
  19. clear()
  20. substr(起始下标,(子串长度)) 返回子串
  21. c_str() 返回字符串所在字符数组的起始地址
  22.  
  23. queue, 队列
  24. size()
  25. empty()
  26. push() 向队尾插入一个元素
  27. front() 返回队头元素
  28. back() 返回队尾元素
  29. pop() 弹出队头元素
  30.  
  31. priority_queue, 优先队列,默认是大根堆
  32. push() 插入一个元素
  33. top() 返回堆顶元素
  34. pop() 弹出堆顶元素
  35. 定义成小根堆的方式:priority_queue<int, vector<int>, greater<int>> q;
  36.  
  37. stack,
  38. size()
  39. empty()
  40. push() 向栈顶插入一个元素
  41. top() 返回栈顶元素
  42. pop() 弹出栈顶元素
  43. 没有clear
  44.  
  45. deque, 双端队列
  46. size()
  47. empty()
  48. clear()
  49. front()/back() 返回第一个或最后一个元素
  50. push_back()/pop_back()
  51. push_front()/pop_front()
  52. begin()/end()
  53. []
  54.  
  55. set, map, multiset, multimap, 基于平衡二叉树(红黑树),动态维护有序序列
  56. size()
  57. empty()
  58. clear()
  59. begin()/end()
  60. ++, -- 返回前驱和后继,时间复杂度 O(logn)
  61.  
  62. set/multiset
  63. insert() 插入一个数
  64. find() 查找一个数
  65. count() 返回某一个数的个数
  66. erase()
  67. () 输入是一个数x,删除所有x O(k + logn)
  68. () 输入一个迭代器,删除这个迭代器
  69. lower_bound()/upper_bound()
  70. lower_bound(x) 返回大于等于x的最小的数的迭代器
  71. upper_bound(x) 返回大于x的最小的数的迭代器
  72. map/multimap
  73. insert() 插入的数是一个pair
  74. erase() 输入的参数是pair或者迭代器
  75. find()
  76. [] 注意multimap不支持此操作。 时间复杂度是 O(logn)
  77. lower_bound()/upper_bound()
  78.  
  79. unordered_set, unordered_map, unordered_multiset, unordered_multimap, 哈希表
  80. 和上面类似,增删改查的时间复杂度是 O()
  81. 不支持 lower_bound()/upper_bound(), 迭代器的++,--
  82.  
  83. bitset, 圧位
  84. bitset<> s;
  85. ~, &, |, ^ 支持所有运算
  86. >>, <<
  87. ==, !=
  88. [] 也可以当成数组来用
  89.  
  90. count() 返回有多少个1
  91.  
  92. any() 判断是否至少有一个1
  93. none() 判断是否全为0
  94.  
  95. set() 把所有位置成1
  96. set(k, v) 将第k位变成v
  97. reset() 把所有位变成0
  98. flip() 等价于~ 取反
  99. flip(k) 把第k位取反
  1. vector
  1. /* vector, 变长数组,倍增的思想
  2. size() 返回元素个数 //所以容器都有
  3. empty() 返回是否为空 //所有容器都有
  4. clear() 清空 队列没有清空
  5. front()/back() //返回第个数字或者最后一个
  6. push_back()/pop_back()
  7. begin()/end() 迭代器
  8. []
  9. 支持比较运算,按字典序
  10. */
  11.  
  12. #include<bits/stdc++.h>
  13. using namespace std ;
  14. int main()
  15. {
  16. // vector<int>a;
  17. // vector<int>a[10]; //vector数组,表示定义了十个vector
  18. // vector<int>a(10);//长度为10的vector
  19. vector<int>a(,);//长度为10的vector ,且每一个数字初始化为3
  20. for(auto x:a) cout<<x<<endl;
  21. }
  22.  
  23. #include<bits/stdc++.h>
  24. using namespace std ;
  25. int main()
  26. {
  27. vector<int>a;
  28. for(int i=;i<;i++) a.push_back(i);
  29. for(int i=;i<a.size();i++) cout<<a[i]<<" ";
  30. cout<<endl;
  31. for(vector<int>::iterator i=a.begin();i!=a.end();i++) cout<<*i<<" ";
  32. cout<<endl;
  33. for(auto i=a.begin();i!=a.end();i++) cout<<*i<<" ";
  34. cout<<endl;//迭代器可以看作指针,*可以简化掉
  35. for(auto x:a) cout<<x<<" ";
  36. cout<<endl;
  37. }
  38.  
  39. #include<bits/stdc++.h>
  40. using namespace std ;
  41. int main()
  42. {
  43. vector<int>a(,),b(,); //按字典排序
  44. if(a<b) puts("a<b");
  45. }

pair

  1. /* pair<int, int>
  2. first, 第一个元素
  3. second, 第二个元素
  4. 支持比较运算,以first为第一关键字,以second为第二关键字(字典序)
  5. */
  6. #include<bits/stdc++.h>
  7. using namespace std ;
  8. int main()
  9. {
  10. pair<int,string>p;
  11. // pair<int,pair<int,int>>p 存储三个
  12. p=make_pair(,"ldy");
  13. cout<<p.first<<endl<<p.second<<endl;
  14. return ;
  15. }

string

  1. /* string,字符串
  2. size()/length() 返回字符串长度
  3. empty()
  4. clear()
  5. substr(起始下标,(子串长度)) 返回子串
  6. c_str() 返回字符串所在字符数组的起始地址
  7. */
  8. #include<bits/stdc++.h>
  9. using namespace std ;
  10. int main()
  11. {
  12. string a="ldy";
  13. a+="def";
  14. a+='c';
  15. cout<<a<<endl;
  16. cout<<a.substr(,)<<endl; // substr(x,y) 起始位置,长度
  17. cout<<a.substr(,)<<endl; //当末尾大于长度,就输出到最后一个为止
  18. cout<<a.substr(,)<<endl; //输出从1开始的整个字符串
  19. printf("%s\n",a.c_str());//用scanf输出
  20. return ;
  21. }

queue

  1. /* queue, 队列
  2. size()
  3. empty()
  4. push() 向队尾插入一个元素
  5. front() 返回队头元素
  6. back() 返回队尾元素
  7. pop() 弹出队头元素
  8. 没有clear函数
  9. */
  10. #include<bits/stdc++.h>
  11. using namespace std ;
  12. int main()
  13. {
  14. queue<int>q;
  15. q=queue<int>(); //因为没有clear 所以如果要情空,可以重新定义
  16. return ;
  17. }

priority_queue

  1. /*priority_queue, 优先队列,默认是大根堆
  2. push() 插入一个元素
  3. top() 返回堆顶元素
  4. pop() 弹出堆顶元素
  5. 定义成小根堆的方式:priority_queue<int, vector<int>, greater<int>> q;
  6. */
  7. #include<bits/stdc++.h>
  8. using namespace std ;
  9. int main()
  10. {
  11. priority_queue<int,vector<int>,greater<int>>heap;//小根堆
  12.  
  13. }

map

  1. //像数组一样来用
  2. #include<bits/stdc++.h>
  3. using namespace std ;
  4. int main()
  5. {
  6. map<string,int>a;
  7. a["ldy"]=;
  8. cout<<a["ldy"]<<endl;
  9. }

AcWing STL初步学习的更多相关文章

  1. STL初步学习(vector)

    前文 初三下学期进入新的学习,对于前两年的学习内容因为各种原因 上课打游戏,睡觉,看视频 已经遗忘,忘记如何使用,算是重新学习一次信息学,希望能尽快将以前的内容弥补上来,争取能在CSP-2020取得一 ...

  2. STL初步学习(queue,deque)

    4.queue queue就是队列,平时用得非常多.栈的操作是只能是先进先出,与栈不同,是先进后出,与之后的deque也有区别.个人感觉手写队列有点麻烦,有什么head和tail什么的,所以说 STL ...

  3. STL初步学习(set)

    2.set set可以看作一个集合,可以实现自动排序(升序)和去重 在许多题目中,都可以使用这个模板库,减少很多操作,例如P1923 第k小数,当然,这道题有很多奇奇怪怪的做法,分值都不同,之后会讲解 ...

  4. STL初步学习(map)

    3.map map作为一个映射,有两个参数,第一个参数作为关键值,第二个参数为对应的值,关键值是唯一的 在平时使用的数组中,也有点类似于映射的方法,例如a[10]=1,但其实我们的关键值和对应的值只能 ...

  5. json2.js的初步学习与了解

    json2.js的初步学习与了解,想要学习json的朋友可以参考下. json2.js的初步学习与了解 1.)该js的下载地址是:http://www.json.org/json2.js 2.)在页面 ...

  6. 老周的ABP框架系列教程 -》 一、框架理论初步学习

    老周的ABP框架系列教程 -- 一.框架理论初步学习   1. ABP框架的来源与作用简介 1.1  简介 1.1.1       ABP框架全称为"ASP.NET Boilerplate ...

  7. 初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助

    初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助,如果有bug或者更好的优化方案,也请批评与指正,谢谢,代码如下: var fs = require('f ...

  8. EF Codefirst 初步学习(二)—— 程序管理命令 更新数据库

    前提:搭建成功codefirst相关代码,参见EF Codefirst  初步学习(一)--设置codefirst开发模式 具体需要注意点如下: 1.确保实体类库程序生成成功 2.确保实体表类库不缺少 ...

  9. 初步学习python

    自计算机诞生以来,也伴随着计算机语言的诞生,现在,全世界的编程语言有600多种,但流行的编程语言也就20多种. Java和C一直占据着前两名.但是近年来伴随着人工智能的发展,Python发展迅猛,以其 ...

随机推荐

  1. JavaScript 继承 -JavaScript高级程序设计

    oo(Object Oriented)面向对象 许多oo语言都支持两种继承方式:接口继承和实现继承.接口继承只继承方法签名,而实现继承则继承实际的方法.函数没有签名,在ecmascript中无法实现接 ...

  2. [CF859C] Pie Rules - dp,博弈论

    有一个长度为n的序列,Alice和Bob在玩游戏.Bob先手掌握决策权. 他们从左向右扫整个序列,在任意时刻,拥有决策权的人有如下两个选择: 将当前的数加到自己的得分中,并将决策权给对方,对方将获得下 ...

  3. [SDOI2017] 新生舞会 - 二分图最大权匹配,分数规划,二分答案

    有一个二分图,每个部都有 \(n\) 个点,每条边有两个参数 \(a_e, b_e\),求一种匹配,使得 \(\sum a_i / \sum b_i\) 最大 Solution 显然的分数规划,考虑二 ...

  4. Spring-JDBCTemplate介绍

        一.Spring对不同的持久化支持: Spring为各种支持的持久化技术,都提供了简单操作的模板和回调 ORM持久化技术 模板类 JDBC org.springframework.jdbc.c ...

  5. Java安装及环境配置

    一.jdk安装及环境配置 1. 下载jdk 去oracle官网下载,这里使用的jdk版本为 有一个需要注意的问题就是7u71后的jdk有两个版本,奇数版本为无BUG版,偶数版包含奇数版全部内容但是有一 ...

  6. SpringBoot学习- 10、设计用户角色权限表

    SpringBoot学习足迹 前几节已经基本了解了SpringBoot框架常用的技术,其他的消息队列,定时器等技术暂时用不到,真正项目中如果基于微信系,阿里系开发的话,还要了解平台专用的技术知识,学习 ...

  7. day22 定时任务

    检查软件是否安装 cronie [root@oldboyedu ~]# rpm -qa cronie cronie-1.4.11-19.el7.x86_64 [root@oldboyedu ~]# r ...

  8. python数据赋值后,修改新数据,原数据如何保证不被修改?

    python中对象,赋值后是同一地址,如果是可变对象,对其中一个修改会影响到另一个,如果要生成完全新的对象,应使用deepcopyimport copydata1=copy.deepcopy(data ...

  9. 题解【洛谷P1433】吃奶酪

    题面 看到数据范围那么小,一眼状压\(\text{DP}\). 设\(dp[i][s]\)表示从\(i\)出发,走过的点的集合为\(s\)的最小距离. 不难推出转移方程(\(dis(i,j)\)为\( ...

  10. K3/Cloud树形单据体的rowId赋值

    RowId是树形单据体独有的,同一单据体中不能重复,用如下语句取. System.Guid.NewGuid().ToString() 同时FGROUP也需要重新设置,值可以和FSeq一样.