vector:是动态数组**
定义vector对象的时候先不用指定数组的大小,有数据的化就往数组里面插入就可以了。vector内部自己管理存储空间。
vector的头文件和命名空间**
#include //注意没有.h
using namespace std;
*
vector的定义
vector是一个类模板,可以定义任何类型
例:
vector arr_int; //定义了一个内部元素是int的动态数组
vector arr_char; //定义了一个内部元素是char的动态数组
vector arr_studet; //定义了一个内部元素是CString的动态数组
vector<char > arr_pchar; //定义了一个内部元素是char的动态数组
vector的初始化
#include<vector>
using namespace std;
int main(int argc, char* argv[])
{
vector<int> one; //定义一个空的元素类型是int 的vector动态数组
vector<int>two(4, 100); //定义一个包含四个元素,每个元素的额值都是100的vector动态数组
vector<int>three(two.begin(), two.end());//使用two这个对象的迭代器,从开始到结束的所有元素来初始化当前对象
vector<int>four(three); //使用three这个对象来初始化当前对象
int myints[ ] = { 16,2,77,39 };
vector<int>five (myints,myints * sizeof(myints) / sizeof(int));//使用一个普通的int数组来初始化当前对象
return 0;
}
vector的常用基本操作
vector<int>arr_int;
①arr_int[idx] 或 arr_int.at(idx) //返回动态数组中下标为idx的arr_int[idx]元素的值
②arr_int.size() ; //返回arr_int数组元素的总个数
③arr_int.front(); //返回arr_int 数组的第一个元素的值
④arr_int.back(); //返回arr_int数组的最后一个元素的值
⑤arr_int.clear(); //清空arr_int数组
⑥arr_int.begin(); //返回arr_int数组的第一个下标
⑦arr_int.end(); //返回arr_int数组最后一个数的下标
⑧arr_int.empty(); //判断arr_int数组是否为空,如果为空返回true,非空返回false
⑨arr_int.swap(v1); //v1是另一个动态数组,将arr_int和v1两个动态数组的元素互换
⑩swap(arr_int,v1); //同⑨
vector的动态插入
vector支持动态插入也有多种方式:
①调用push_back在尾部插入一个元素,只能是一个一个的插入:arr_int.push_back(3);
②调用insert在下标为1的前面插入一个元素,arr_int.insert(arr_int.begin()+1,888);
③调用insert在下标为2的前面插入3个888元素,arr_int.insert(arr_int.begin()+2,3,888);
vector<int>arr_int,arr_2;
arr_int.push_back(0);
arr_int.push_back(1);
arr_int.push_back(3);
arr_2.push_back(2);
arr_2.push_back(5);
arr_2.push_back(6);
arr_int.insert(arr_int.begin()+2,arr_2.begin(),arr_2.end());
int sz_int[] = {4,7,9};
arr_int.insert(arr_int.begin()+4,sz_int,sz_int+3);
vector的动态删除
①arr_int.pop_back(); //删除arr_int动态数组的最后一个元素
②arr_int.erase(v.begin()+1,v.end()-r); //删除arr_int动态数组中下标(1,v.end()-r)的元素
③arr_int.erase(v.begin()+k); //删除arr_int动态数组的下标为k的元素,返回下一位置的迭代器
vector的遍历
①因为vector也是数组,所以使用索引下标遍历。
for(int fa=0;fa<arr_int.size();++fa)
{
int value=arr_int[fa];
cout<<fa<<" ," <<value<<endl;
}
②使用迭代器
for(vector<int>::iterator itor = arr_int.begin(), itor != arr_int.end();++itor)
{
int value = *itor;
cout<<" value= "<<value<<endl;
}