vector是一个能够存放任意类型的动态数组。
1:构造函数
void test02(){
//1:默认构造
vector<int>v1;
for(int i=0;i<10;i++){
v1.push_back(i);
}
print(v1);//输出容器中的元素
//2:区间构造
vector<int> v2(v1.begin(),v1.end());
print(v2);
//3:n个elem方式构造 vetcor<> v(n,elem);
vector<int> v3(10,6);
print(v3);
//4:复制构造函数
vector<int> v4(v3);
print(v4);
} //vector构造函数
2:赋值
void test03(){
vector<int> v1;
for(int i=0;i<10;i++){
v1.push_back(i);
}
// print(v1);
//1:赋值 =
vector<int> v2;
v2=v1;
// print(v2);
//2 assign
vector<int> v3;
v3.assign(v1.begin(),v1.end());
//print(v3);
//3 n个elem方式赋值
vector<int> v4;
v4.assign(2,9);
print(v4);
}
3:遍历vector数组
void test01(){
vector<int> v; //创建vector容器
//向容器中插入数据
v.push_back(10);
v.push_back(20);
v.push_back(30);
v.push_back(40);
//通过迭代器访问
vector<int>::iterator itBegin=v.begin();//vector起始位置
vector<int>::iterator itEnd=v.end();//vector 指向最后元素的下一个元素
//第一种遍历方式
while(itBegin!=itEnd){
cout<<*itBegin<<" ";
itBegin++;
}
//第二种遍历方式
for(vector<int>::iterator it=v.begin();it!=v.end();it++){
cout<<*it<<" ";
}
//第三种遍历方式,STL提供的遍历算法
for_each(v.begin(),v.end(),myPrint);
}//遍历vector数组
4:vector容器大小容量
void test04(){
vector<int> v1;
for(int i=0;i<10;i++){
v1.push_back(i);
}
//1:empty()
//2:capacity() 容量
//3:size() 大小
if(v1.empty()){
cout<<"true"<<endl;
}else{
cout<<"false"<<endl;
cout<<v1.capacity()<<endl;
cout<<v1.size()<<endl;
}
//4:resize() 重新指定大小,比原来长用0填充,比原来短,删除多余的。
v1.resize(15);
print(v1);
v1.resize(5);
print(v1);
v1.resize(15,100);//指定用100填充
print(v1);
}//vector容器大小容量
5:vector 插入删除
void test05(){
vector<int> v1;
for(int i=0;i<10;i++){
//1:尾插法
v1.push_back(i);
}
//遍历
print(v1);
//尾删
v1.pop_back();
print(v1);
//插入 insert(迭代器,num)
v1.insert(v1.begin(),10);
print(v1);
v1.insert(v1.begin(),2,100);
print(v1);
//删除 erase(迭代器)/erase(区间)
v1.erase(v1.begin());
print(v1);
v1.erase(v1.begin(),v1.begin()+5);
print(v1);
}//vector 插入删除
6:vector存取
void test06(){
vector<int> v1;
for(int i=0;i<10;i++){
v1.push_back(i);
}
//利用中括号的方式访问
cout<<v1[2]<<" ";
//利用at
cout<<v1.at(2);
//第一个元素
cout<<"first"<<v1.front()<<endl;
//访问尾元素
cout<<"end"<<v1.back()<<endl;
}//vector存取
7:互换容器
void test07(){
vector<int> v1;
for(int i=0;i<10;i++){
v1.push_back(i);
}
vector<int>v2;
for(int i=10;i>0;i--){
v2.push_back(i);
}
print(v1);
print(v2);
v1.swap(v2);//交换
print(v1);
print(v2);
}//互换容器
8:预留空间
void test08(){
vector<int>v;
//利用reserve预留空间
v.reserve(100000);
int num=0;
int *p=NULL;
for(int i=0;i<100000;i++){
v.push_back(i);
if(p!=&v[0]){
p=&v[0];
num++;
}
}
cout<<"num="<<num<<endl;//输出开辟了几次新内存
}//预留空间