(注意,这里介绍的用法只是常用的,但是不完全,如若有错,可以更改)
一.vector
可以看成变长数组,长度可变。
1.定义
vector<type>vi;
2.尾部增加元素
vi.push_back(el);
3.删除尾部元素
vi.pop();
4.修改某个位置元素
vi[i]=el;
5.查找某个位置元素
vi[i]
6.在某个位置插入元素
vi.insert(a.begin()+pos,el);
7.判空
vi.empty()
8.长度
vi.size()或者vi.length()
9.迭代遍历
for(auto it=vi.begin();it!=vi.end();it++)
或者for(vector<int>::iterator it=vi.begin();it!=vi.end();it++)
或者for(int i=0;i<vi.length();i++)
二.string
1.定义
string s="HAHAHAHA"
2.尾部插入字符
s.push_back('a');
3.在尾部增加字符串
s+="HAHAHAHA";
4.在中间某处增加字符
s.insert(pos,'a');//pos为位置
5.删除某个区间
s.erase(pos,len);//pos为位置,len为长度
6.修改某个区间
s.replace(pos,len,s1);//pos为开始的位置,len为替换的长度,s1为要替换成的字符串
7.查找某个区间的内容
s.substr(pos,len);
8.在字符串中查找某个子串的位置
s.find(s1);//s1为要找的串,如果找到就返回索引,找不到返回-1
9.长度
s.length()或者s.size();
10.判空
s=="";
11.迭代
for(auto it=s.begin();it!=s.end();it++)
或者for(int i=0;i<s.length();i++)
三.set
1.定义
set<type>st;
2.增加元素
st.insert(el);
3.删除元素
st.erase(st.begin()+i);
4.长度
st.size();
5.判空
st.empty();
6.查找
st.find(el);//不成功返回st.end()
7.迭代
for(auto it=vi.begin();it!=vi.end();it++)
或者for(vector<int>::iterator it=vi.begin();it!=vi.end();it++)
8.自定义比较函数(适用于元素为结构体的set集合)
struct Date {
int year,month,day;
Date(int a,int b,int c) {
year=a;
month=b;
day=c;
}
friend bool operator<(const Date& d1,const Date& d2){//设置排序
if(d1.year!=d2.year)return d1.year<d2.year;
else{
if(d1.month!=d2.month)return d1.month<d2.month;
else return d1.day<d2.day;
}
}
};
set<Date>date;
四.map
1.定义
map<type1,type2>mp;
2.查找元素
mp[key];
或者mp.find(key);//返回的是元素的迭代器
3.插入元素
mp[key]=value;
4.删除元素
mp.erase(it);//it为该元素的迭代器
5.二维map
map<type1,map<type2,type3>mp;
之后可以通过mp[key1][key2]访问元素
6.迭代
for(auto it=mp.begin();it!=mp.end();it++){
cout<<it->first<<" "<<it->second<<endl;//first为key,second为value
}
五.queue
1.定义
queue<type>q;
2.在末尾插入元素
q.push(el);
3.删除第一个元素
q.pop();
3.长度
q.size();
4.判空
q.empty();
5.得到第一个元素
q.front();
6.得到最后一个元素
q.back();
六.priority_queue
定义
//默认降序队列
priority_queue<type>q;
//升序队列,中间的参数为容器类型,也可改成deque<type>
priority_queue <type,vector<type>,greater<type> > q;
//降序队列
priority_queue <type,vector<type>,less<type> >q;
1.访问队头元素
q.top();
2.弹出队头元素
q.pop();
3.在队尾插入元素
q.push();
4.判空
q.empty();
5.长度
q.size();
6.自定义比较函数(与set集合那里一样,在结构体里边定义,这里就不赘述了)
七.stack
1.定义
stack<type>st;
2.获取栈顶的值
st.top();
3.将元素压至栈顶
st.push();
4.将栈顶元素挪出去
st.pop();
5.栈的大小
st.size();
6.判空
st.empty();