vectorname;
ps: 如果 typename 是一个STL容器时定义时要在>>符号之间加上空格 -->vector >name;
* vectorvi;
* 通过下标访问
vi[index];
* 通过迭代器访问·
vector::iterator it;
例如:
#include
#include
#include
using namespace std;
int main(){
vectorvi;
for(int i=1;i<=5;i++)
vi.push_back(i);
vector::iterator it=vi.begin();
//vi.begin()取vi的首地址
//vi.end()取尾元素的下一个地址,作为迭代器末尾的标志,不储存任何元素
/*for(int i=0;i<5;i++)
printf("%d ",*(it+i));
return 0;*/
for(vector::iterator it=vi.begin();it!=vi.end();it++){
printf("%d ",*it);
//TODO
}
}
1.push_back()在vector末尾添加一个元素
2.pop_back()在vector末尾删除一个元素
3.size()返回vector中储存的元素个数
4.clear()清除所有元素
5.insert(it,i)用来向任意迭代器it处插入一个元素i
6.erase():
用法1:
删除单个元素
erase(it)
用法2:
删除一个区间的所有元素
erase(first,last)即删除[first,last)间的元素
例如:
#include
#include
#include
using namespace std;
int main(){
vectorvi;
for(int i=1;i<=5;i++)
vi.push_back(i);
vector::iterator it=vi.begin();
//vi.begin()取vi的首地址
//vi.end()取尾元素的下一个地址,作为迭代器末尾的标志,不储存任何元素
printf("函数操作前\n");
for(int i=0;i<5;i++)
printf("%d ",*(it+i));
//vi.insert(vi.begin(),10);//vector第一个地方插入一个元素
printf("\n");
// vi.erase(vi.begin()+3);//删除第4个元素
//vi.erase(vi.begin(),vi.begin()+3);//删除vi[0],vi[1],vi[2]
printf("函数操作后\n");
for(vector::iterator it=vi.begin();it!=vi.end();it++){
printf("%d ",*it);
//TODO
}
}
下列一段非良构代码
vectordata;//未指定容器初始大小
for(int i=0;i>data[i];//会造成程序错误
}
为避免这种情况需RAII(资源获取即初始化)
关于vector的初始化
二维数组数据为0: vector>data(m,vector(n,0));
使用头文件#include
set
set
只能通过迭代器访问
set::iterator it;
1.insert()
2.find(value)返回set中对应值为value的迭代器
3.erase()的用法:
* erase(it) it为所需要的删除元素的迭代器
* erase(value) value为所需删除的元素
* erase(first,last)删除一个区间内所有的元素
4.size()
5.clear()
例子:
#include
#include
using namespace std;
int main(){
setst;
st.insert(100);
st.insert(3);
st.insert(5);
st.insert(22);
set::iterator it=st.find(5);
printf("%d\n",*it);
}
头文件#include
string中的内容访问
#include
#include
using namespace std;
int main(){
string str="abcd";
for(string::iterator it=str.begin();it!=str.end();it++){
printf("%c",*it);
//TODO
}
}
string常用函数
1.operator+=
2.campare operator
3.length()/size()
4.insert()用法
insert(pos,str)在pos号位置后插入元素
insert(it,it2,it3)it为原字符串的与插入位置,it2和it3为待插字符串的首尾迭代器
#include
#include
#include
using namespace std;
int main(){
string str="abcd";
for(string::iterator it=str.begin();it!=str.end();it++){
printf("%c",*it);
//TODO
}
printf("\n");
string str2="易助平";
//str.insert(2,str2);//在第二个元素之后插入字符串
str.insert(str.begin()+1,str2.begin(),str2.end());
cout<
#include
#include
using namespace std;
int main(){
string str="Thank you for your smile";
string str2="you";
string str3="me";
if(str.find(str2)!=string::npos){
cout<
#include
using namespace std;
int main(){
string str="Maybe you will turn around.";
string str2="will not";
string str3="surely";
cout<
map
typename1为映射前数据类型,typename2为映射后数据类型
1.通过下标
2.通过迭代
输出按键的从小到大的顺序排列
#include
1.find()
2.erase
3.size()
4.clear()
1.通过front()访问首元素,back()访问尾元素
1.push()
2.front()和back()
3.empty()
4.pop()
5.size()
1.top()
2.empty()
3.push()
4.pop()
5.size()
记住一句话:Map由一个个pair组成
1.pair p;(定义)
2.pair p(v1,v2);//返回一个pair
3.pair p={v1,v2};
4. make_pair(v1,v2);//返回一个用v1,v2初始化的pair
5.p.first,p.second;//读取数据
1. max(),min(),abs()
2.swap(x,y)交换x与y的值
3.reverse(it,it2)可以将数组指针在[it,it2)之间的元素或容器的迭代器在[it,it2)范围内的元素进行反转
#include
#include
#include
using namespace std;
int main(){
int a[10]={10,11,12,13,14,15};
reverse(a,a+4);
for(int i=0;i<6;i++){
//TODO
printf("%d ",a[i]);
}
string str="abcdefg";
reverse(str.begin()+1,str.begin()+6);//将str[1]~str[6]反转
cout<
#include
using namespace std;
int main(){
int a[10]={1,2,3};
do{
printf("%d%d%d\n",a[0],a[1],a[2]);
}while(next_permutation(a,a+3));
}
5.fill()
可以将数组或容器中的某一段区间赋为某个相同的值
6.sort()
sort(首地址,尾地址的下一个地址,比较函数)
Ps:前两个参数必填,比较函数不写,默认对前面的区间进行递增排序
#include
#include
using namespace std;
int main(){
int a[10]={10,-1,2,34,21,12};
sort(a,a+6);//将a[0]~a[5]从小到大排序
for(int i=0;i<6;i++){
printf("%d ",a[i]);
}
return 0;
}#include
#include
using namespace std;
bool cmp(int a,int b){
return a>b;
}//cmp
bool cmp(char a,char b){
return a>b;
}
int main(){
int a[10]={10,-1,2,34,21,12};
sort(a,a+6,cmp);//将a[0]~a[5]从小到大排序
for(int i=0;i<6;i++){
printf("%d ",a[i]);
}
printf("\n");
char c[]={'T','W','A','K'};
sort(c,c+4);//按字典序从小到大排序
for(int i=0;i<4;i++){
//TODO
printf("%c ",c[i]);
}
return 0;
}
7.lower_bound()和 upper_bound()
lower_bound(first,last,val)返回第一个大于等于val的位置,数组返回指针,容器返回迭代器
upper_bound(first,last,val)返回第一个小于等于val的位置