vector:动态数组
- 通过下标访问,或迭代器
#include<bits/stdc++.h>
using namespace std;
int main()
{
vector<int> v;
v.push_back(0);
v.push_back(1);
v.push_back(2);
v.pop_back();
v.insert(v.begin()+1,3);
sort(v.begin(),v.end());//左闭右开
for(int i=0;i<v.size();i++){
cout<<v[i];
}
return 0;
}
二维数组:
#include<bits/stdc++.h>
using namespace std;
int main()
{
//vector<int> a[10];//一维长度固定
vector<vector<string> >s;//> >空格
s.push_back(vector<string>());//向后追加一行
t[0].push_back("123");
cout<<t[0][0];
return 0;
}
删除和迭代器访问:
v.erase(v.begin+n);//删除下标为n的元素
v.erase(v.begin+1,v.begin+3);//删除区间内的元素
for(vector<typename>::iterator it=T.begin();it!=T.end();it++)
v.erase(it);//删除迭代器指定元素
v.clear();
map:字典
- 键值对:a[“xiaoming”]=1; 键key为xiaoming,值value为1
- 下标或迭代器访问
map<string,int> m;//键自动排序
for(map<string,int>::vector it=m.begin();it!=mp.end;it++){
it->first//访问键
it->second//访问值
}
map<string,int>::vector it=m.find( key ) ;
m.size();
m.clear();
m.erase(it) ;
m.erase(key);
m.erase(it,m.end());
qunue:队列
- 使用pop和front前,必须使用empty判断队列是否为空
queue<int> q;
for(int i=0;i<6;i++)
q.push(i);
for(int i=0;i<3;i++)
q.pop();
q.front()//访问队头
q.back()//访问队尾
if(q.empty()==true)
` cout<<"Empty";
q.size()
set:去重且自动有序
- 只能通过迭代器访问
set<int> s;
s.insert(1);
s.insert(2);
for(set<int>::iterator it=s.begin();it !=s.end();it++){
printf("%d",*it);
}
s.erase(s.find(12));
s.erase(it,s.end());
set<int>::iterator it=s.find(40);//返回迭代器,验证元素有没有
s.size();
s.clear();
string
string str;
cin>>str;//只能用cin
cout<<str;
str+=str;
>//字典序比较
for(int i=0;i<str.length()-3;i++){
printf("%c",str[i]);//像字符数组访问
}
printf("%s",str.c_str());
str.erase(str.begin()+2);
str.erase(str.begin()+2,str.end-1);
str.erase(pos,len); //
str.insert(2,"obq")
str.insert(str.begin()+2,str1.begin(),str1.end())//str:被插入的字符串,str1:插入的字符串
T.substr(1,5) ;//返回从1位开始,长度为5的字符串
T.find(_str):返回_str第一次出现的位置,否则返回 string::nops
T.replace(pos,len,str_2)