1.vector,变长数组
size()返回元素个数
empty()返回是否为空
clear()清空
front()/back()
push back()/pop back()
begin()/end()
支持比较运算,按字典序
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
vector<int> a;
//vector<int> a(10,3); a里面有10个元素,每个元素值为10
//vector<int> a[10]; 10个vector容器
for(int i=0;i<10;i++) a.push_back(i);
//三种遍历vector方式
for(int i=0;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 x:a) cout<<x<<' ';
cout<<endl;
vector<int> b(4,3),c(3,4);
if(b<c) puts("b<c");
return 0;
}
2.pair<int, int>
first,第一个元素
second,第二个元素
支持比较运算,以 first为第一关键字,以 second为第二关键字(字典序)
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
pair<int,string> p;
p=make_pair(10,"abc");
p={20,"cde"};
pair<int,pair<int,int>> p1;
return 0;
}
3.string,字符串, substr(),c_str()
size(),length(),empty(),clear()
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
string a="abc";
a+="def";
a+='g';
cout<<a<<endl;
cout<<a.substr(1)<<endl;//1~最后
cout<<a.substr(1,2)<<endl;//1开始 长度为2
printf("%s\n",a.c_str());//c_str 转化成字符数组
return 0;
}
4.queue,队列
size()
empty()
push()向队尾插入一个元素
front()返回队头元素
back()返回队尾元素
pop()弹出队头元素
5.priority_ queue,优先队列,默认是大根堆(最大元素在上面)
push()插入一个元素
top()返回堆顶元素
pop()弹出堆顶元素
想要变成小根堆,一种是插入负数,二种是
priority_queue<int,vector<int>,greater<int>> heap;
6.stack,栈
size()
empty()
push()向栈顶插入一个元素
top()返回栈顶元素
pop()弹出找顶元素
7.deque,双端队列
size()
empty()
clear()
front()/back()
push_back()/pop_back()
push_front()/pop_front()
begin()/end()
[ ]
8. set/multiset (set不可有重复元素,multiset可以有重复元素)
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
using namespace std;
int main()
{
map<string,int> a;
a["abc"]=1;
cout<<a["abc"]<<endl;
return 0;
}