今天复习到vector向量容器,里面包括vector向量容器的一些优点以及具体的使用方法及代码,分享给大家。
Vector向量容器不但能够像数组一样对元素进行随机访问,还可以在尾部插入元素,是一种简单、高效的容器,完全可以代替数组。
Vector具有内存自动管理的功能,对于元素的插入和删除,可以动态调整所占的内存空间。
使用vector向量容器,需要在头文件中包含“#include<vector>”。
Vector向量容器的下标是从0开始计数的。
使用方法:
1.创建vector对象
(1)不指定容器的元素个数
vector<int>v;
(2)创建的时候指定容器的大小
Vector<double>v(10);
(3)创建一个具有n个元素的向量容器对象,没个元素具有指定的初始值。
Vector<int>v(10,8.6);
2.尾部元素扩张
在使用vector向量容器的时候,我们通常使用push_back()函数对vector容器在尾部追加新的元素。
在尾部追加新的元素时候,vector容器会自动分配新的内存空间。
vector<int>v;
v.push_back(2);
3.通过下标的方式访问vector元素
vector<int>v;
cout<<v[1]<<endl;
4.通过迭代器访问vector元素
我们在对vector中的元素进行访问的时候,通常使用迭代器配合循环语句对vector中的元素进行遍历访问,迭代器的类型一定要与它要遍历的vector对象的元素类型一致。
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int>v;
v.push_back(2);
v.push_back(7);
v.push_back(10);
vector<int>::iterator it;
for( it = v.begin() ; it != v.end() ; it++ )
cout<<*it<<" ";
cout<<endl;
return 0;
}
5.元素的插入
insert方法可以在vector对象的任意位置前插入一个新的元素,同时,vector自动扩张一个元素空间,插入位置后的所有元素一次向后挪动一个位置。
注意:insert()方法要求插入的位置,是元素的迭代器位置,而不是元素的下标。
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int>v;
v.push_back(2);
v.push_back(7);
v.push_back(10);
//在最前面插入元素,元素值为8
v.insert(v.begin() , 8);
//在第2个元素前面插入新元素,元素值为1
v.insert(v.begin()+1 , 1);
//在末尾追加新的元素3
v.insert(v.end(),3);
vector<int>::iterator it;
for( it = v.begin() ; it != v.end() ; it++ )
cout<<*it<<" ";
cout<<endl;
return 0;
}
6.元素的删除.
erase()方法可以删除vector中迭代器所指的一个元素或一段区间中的所有元素。
clear()方法可以一次性的删除vector中的所有元素。
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int>v;
v.push_back(2);
v.push_back(7);
v.push_back(10);
//在最前面插入元素,元素值为8
v.insert(v.begin() , 8);
//在第2个元素前面插入新元素,元素值为1
v.insert(v.begin()+1 , 1);
//在末尾追加新的元素3
v.insert(v.end(),3);
//删除第2个元素
v.erase(v.begin()+1);
//删除迭代器第1到第5区间的所有元素
v.erase(v.begin(),v.begin()+5);
//清空向量
v.clear();
vector<int>::iterator it;
for( it = v.begin() ; it != v.end() ; it++ )
cout<<*it<<" ";
cout<<endl;
return 0;
}
7.使用reverse反向排列算法
reverse反向排列算法,需要定义头文件“#include<algorithm>”,该算法可以将向量中某段迭代器区间元素反向排列。
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
vector<int>v;
v.push_back(2);
v.push_back(7);
v.push_back(10);
//在最前面插入元素,元素值为8
v.insert(v.begin() , 8);
//在第2个元素前面插入新元素,元素值为1
v.insert(v.begin()+1 , 1);
//在末尾追加新的元素3
v.insert(v.end(),3);
vector<int>::iterator it;
for( it = v.begin() ; it != v.end() ; it++ )
cout<<*it<<" ";
cout<<endl;
reverse(v.begin() , v.end());
for( it = v.begin() ; it != v.end() ; it++ )
cout<<*it<<" ";
cout<<endl;
return 0;
}
8.在对vector向量容器中的元素进行排列的时候,还可以通过sort()算法排序,排列方法自定义。
9.向量的大小
使用size()方法可以返回向量的大小,即元素的个数。
使用empty()方法可以返回向量是否为空。
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
vector<int>v;
v.push_back(2);
v.push_back(7);
v.push_back(10);
//在最前面插入元素,元素值为8
v.insert(v.begin() , 8);
//在第2个元素前面插入新元素,元素值为1
v.insert(v.begin()+1 , 1);
//在末尾追加新的元素3
v.insert(v.end(),3);
vector<int>::iterator it;
for( it = v.begin() ; it != v.end() ; it++ )
cout<<*it<<" ";
cout<<endl;
reverse(v.begin() , v.end());
for( it = v.begin() ; it != v.end() ; it++ )
cout<<*it<<" ";
cout<<endl;
//输出向量大小,即包含了多少个元素
cout<<v.size()<<endl;
//输出向量是否为空,如果非空,则返回逻辑假,即0,否则返回逻辑真,即1
cout<<v.empty()<<endl;
v.clear();
cout<<v.size()<<endl;
cout<<v.empty()<<endl;
return 0;
}