vector, 变长数组,倍增的思想
size() 返回元素个数
empty() 返回是否为空
clear() 清空
front()/back()
push_back()/pop_back()
begin()/end()
[]
支持比较运算,按字典序 pair<int, int>
first, 第一个元素
second, 第二个元素
支持比较运算,以first为第一关键字,以second为第二关键字(字典序) string,字符串
size()/length() 返回字符串长度
empty()
clear()
substr(起始下标,(子串长度)) 返回子串
c_str() 返回字符串所在字符数组的起始地址 queue, 队列
size()
empty()
push() 向队尾插入一个元素
front() 返回队头元素
back() 返回队尾元素
pop() 弹出队头元素 priority_queue, 优先队列,默认是大根堆
push() 插入一个元素
top() 返回堆顶元素
pop() 弹出堆顶元素
定义成小根堆的方式:priority_queue<int, vector<int>, greater<int>> q; stack, 栈
size()
empty()
push() 向栈顶插入一个元素
top() 返回栈顶元素
pop() 弹出栈顶元素
没有clear deque, 双端队列
size()
empty()
clear()
front()/back() 返回第一个或最后一个元素
push_back()/pop_back()
push_front()/pop_front()
begin()/end()
[] set, map, multiset, multimap, 基于平衡二叉树(红黑树),动态维护有序序列
size()
empty()
clear()
begin()/end()
++, -- 返回前驱和后继,时间复杂度 O(logn) set/multiset
insert() 插入一个数
find() 查找一个数
count() 返回某一个数的个数
erase()
() 输入是一个数x,删除所有x O(k + logn)
() 输入一个迭代器,删除这个迭代器
lower_bound()/upper_bound()
lower_bound(x) 返回大于等于x的最小的数的迭代器
upper_bound(x) 返回大于x的最小的数的迭代器
map/multimap
insert() 插入的数是一个pair
erase() 输入的参数是pair或者迭代器
find()
[] 注意multimap不支持此操作。 时间复杂度是 O(logn)
lower_bound()/upper_bound() unordered_set, unordered_map, unordered_multiset, unordered_multimap, 哈希表
和上面类似,增删改查的时间复杂度是 O()
不支持 lower_bound()/upper_bound(), 迭代器的++,-- bitset, 圧位
bitset<> s;
~, &, |, ^ 支持所有运算
>>, <<
==, !=
[] 也可以当成数组来用 count() 返回有多少个1 any() 判断是否至少有一个1
none() 判断是否全为0 set() 把所有位置成1
set(k, v) 将第k位变成v
reset() 把所有位变成0
flip() 等价于~ 取反
flip(k) 把第k位取反
vector
/* vector, 变长数组,倍增的思想
size() 返回元素个数 //所以容器都有
empty() 返回是否为空 //所有容器都有
clear() 清空 队列没有清空
front()/back() //返回第个数字或者最后一个
push_back()/pop_back()
begin()/end() 迭代器
[]
支持比较运算,按字典序
*/ #include<bits/stdc++.h>
using namespace std ;
int main()
{
// vector<int>a;
// vector<int>a[10]; //vector数组,表示定义了十个vector
// vector<int>a(10);//长度为10的vector
vector<int>a(,);//长度为10的vector ,且每一个数字初始化为3
for(auto x:a) cout<<x<<endl;
} #include<bits/stdc++.h>
using namespace std ;
int main()
{
vector<int>a;
for(int i=;i<;i++) a.push_back(i);
for(int i=;i<a.size();i++) cout<<a[i]<<" ";
cout<<endl;
for(vector<int>::iterator i=a.begin();i!=a.end();i++) cout<<*i<<" ";
cout<<endl;
for(auto i=a.begin();i!=a.end();i++) cout<<*i<<" ";
cout<<endl;//迭代器可以看作指针,*可以简化掉
for(auto x:a) cout<<x<<" ";
cout<<endl;
} #include<bits/stdc++.h>
using namespace std ;
int main()
{
vector<int>a(,),b(,); //按字典排序
if(a<b) puts("a<b");
}

pair

/* pair<int, int>
first, 第一个元素
second, 第二个元素
支持比较运算,以first为第一关键字,以second为第二关键字(字典序)
*/
#include<bits/stdc++.h>
using namespace std ;
int main()
{
pair<int,string>p;
// pair<int,pair<int,int>>p 存储三个
p=make_pair(,"ldy");
cout<<p.first<<endl<<p.second<<endl;
return ;
}

string

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

queue

/* queue, 队列
size()
empty()
push() 向队尾插入一个元素
front() 返回队头元素
back() 返回队尾元素
pop() 弹出队头元素
没有clear函数
*/
#include<bits/stdc++.h>
using namespace std ;
int main()
{
queue<int>q;
q=queue<int>(); //因为没有clear 所以如果要情空,可以重新定义
return ;
}

priority_queue

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

map

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

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. 2019ICPC南昌站C.And and Pair

    题意: 给一个二进制数n,求满足0<=j<=i<=n且i&&n==i&&i&j==0的数对(i,j)有多少对,n可能有前导0. 解析: 对一一 ...

  2. IntelliJ IDEA实用插件推荐

    IntelliJ在业界被公认为优秀的Java开发平台之一,在智能代码助手.代码自动提示.重构.J2EE支持.代码审查. 创新的GUI设计等方面表现突出,并支持基于Android平台的程序开发.通过插件 ...

  3. Wannafly Camp 2020 Day 1H 最大公约数 - 质因数分解,高精度

    把每个质因子扒出来乱搞一下 #include <bits/stdc++.h> using namespace std; int g[505][505]; int isp[505]; str ...

  4. PP: Modeling extreme events in time series prediction

    KDD: Knowledge Discovery and Data Mining (KDD) Insititute: 复旦大学,中科大 Problem: time series prediction; ...

  5. js上传文件工具类

    个人博客 地址:http://www.wenhaofan.com/article/20180808210417 jQuery.extend({ uploadUtil:function(){ } }); ...

  6. C语言strcat()函数:字符串连接(拼接)

    C语言strcat()函数:字符串连接(拼接)   C语言 strcat() 函数用来将两个字符串连接(拼接)起来. 头文件:string.h 语法/原型: char*strcat(char* str ...

  7. Map merge

    将新的值赋值给map(如果不存在)或更新具有给定key的现有值. Map<Integer, Integer> map = new HashMap<>(); for (Integ ...

  8. 虚拟机中CentOS 6.5 添加扩展分区

    此扩展方法要求支持LVM 1.更改虚拟机配置 虚拟机->设置->硬盘->扩展磁盘容量 fdisk -l 查看,发现硬盘空间变大了 [root@thj Desktop]# fdisk ...

  9. CF div2 E. Water Balance

    给你n个数,你可以这样操作:使区间[l,r]的数变成 他们的平均数,求字典序最小的序列. 做法:从左往右逐个比较,比较完之后会形成一个区间,一开始是区间为1的数进行比较,到后来会 变成区间较大的进行比 ...

  10. Highcharts中文帮助文档

    Highcharts中文帮助文档Highcharts 简介: Highcharts 是一个制作图表的 Javascript 类库,可以制作的图表有:直线图,曲线图.区域图.区域曲线图.柱状图.饼装图. ...