一.vector:用于元素个数不确定时或者邻接表
1.定义
vector <vector<int > > name;//中间的>>要加上空格
vector <int> vi;
2.访问
a.直接访问
vi[index]
b.通过迭代器访问
vector<typename>::iterator it=vi.begin();
for(int i=0;i<n;i++){
printf("%d",*(it+i));
}
可见vi[i]与*(vi.begin()+i)相同
for(vector<int>::iterator it=vi.begin();it!=vi.end();i++){
printf("%d",*it);
}
注意这里是it!=vi.end()
3.常用
push_back()插入
pop_back()删除尾元素
size()返回vector中的元素个数
clear()清空vector中所有元素
insert(it,x)向任意迭代器插入元素x
erase(it)删除迭代器it处的元素
erase(first,last)删除左闭右开[first,last)处的元素
erase(vi.begin()+1,vi.begin()+4);
二.set:使内部元素有序,且不重复
1.定义
set <double> st;
set <node> st;//node是结构体
2.访问:set只能通过迭代器访问
for(set<int>::iterator it=st.begin();it!=st.end();it++){
printf("%d "*it);
}
3.常用
insert(x)将x插入到容器set中
find(value)返回set中对应值为value的迭代器
set<int>::iterator it=st.find(x)
erase(it)删除迭代器it处的元素
//一般与find联合使用
st.erase(st.find(x))
erase(x)删除值为x的元素
erase(first,last)删除迭代器first到迭代器last区间的元素,仍然是左闭右开[first,last)
size()获得set中的元素个数
clear()清空set
三.string:需要#include<string>(不加.h)和using namespace std;
1.定义
string str="abc";
2.访问与输入输出
a.直接访问
与访问字符数组相同
str[i]
读入读出只能用cin和cout,若用printf,需要c_str()转化为字符数组输出
cin,cout在iostream的头文件中
cin>>str;
cout<<str<<endl;
printf("%s\n",str.c_str());
b.通过迭代器访问,不需要参数
for (string::iterator it=str.begin();it!=str.end();it++){
printf("%c",*it);
}
与vector相同,支持迭代器加减某个数字,如str.begin()+3
3.常用
operator == , != , < , > , <= , >= ,+=
string str1="abc",str2="xyz",str3;
str3=str1+str2;
str1+=str2;
if(str1>=str2){
....
}
length(),size()返回string的长度
insert(pos,string)在pos位置处插入string
insert(it,it2,it3)it为原字符串与插入的位置,it2和it3为待插字符串的收尾迭代器
用来表示串[it2,it3)将被插入到it的位置上
string str1="abc",str2="xyz";
str1.insert(str1.begin()+3,str2.begin(),str2.end());
erase(it)删除迭代器it位置的元素
erase(first,last)删除[first,last)区间的元素,他们都是迭代器
str.erase(str.begin()+1,str.end()-3)
erase(pos,lenth)pos为开始删除的起始位置,lenth为删除的字符个数
clear()清空string中的数据