vector数组的定义以及操作
⼀. ⼀维数组
1. 数组初始化
//第⼀种初始化,就单纯的建⽴⼀个可变数组array,因为还没有存放元素,未分配空间
vector<int> array;
//第⼆种初始化,是使⽤初始化列表来指定初始值以及元素个数
//以初始化列表中的値作为元素初始值,⽣成有6个数的初始vector数组
vector<int> array ={1,2,3,4,5,6};
vector<int> array{1,2,3,4,5,6};
//第三种初始化,使⽤初始元素个数以及指定元素值来⽣成初始vector数组
//⽣成⼀个具有numbers个元素的vector数组,且数组中所有元素初始化为value
vector<int>array(numbers, value);
vector<int>array(numbers);//此时,默认value为0
//第四种初始化,使⽤复制另⼀个数组的⽅式来初始化⼀个新数组,
//表⽰复制前n个元素
vector<int>newArray(array.begin(), array.begin()+ n);//n = 3: newArray{1,2,3}
2. 数组的访问操作
// 第⼀种:通过下标访问,与普通数组⼀样
array[0];// 1
array[1];// 2
array[2];// 3
array[3];// 4
array[4];// 5
array[5];// 6
// 第⼆种:通过迭代器访问
vector<int>::iterator it;// 迭代器it的定义
it = array.begin();
// 使⽤auto定义迭代器it也可
auto it = array.begin();
for(int i =0; i <6; i ++){
cout<<*(it + i)<<" ";
}
3. 数组的遍历操作(auto定义)
/
/C++11标准,auto关键字遍历
for(auto iter = array.begin(); iter != d(); iter ++){
cout <<*iter <<" ";
}
// 也可以将下列中的auto换成定义的int型
for(auto iter : array)
{
cout<<iter<<" ";
}
4. 数组的其他操作
//添加元素
array.push_back(7);//将元素7加⼊数组末尾
//删除元素
// 1.删除数组末尾的元素
array.pop_back();
// 2.通过erase(iter),单个删除迭代器为iter处的元素
auto iter = array.begin();
// 3.通过erase(first,last),批量删除⼀个区间[first, last)内的所有元素
//插⼊元素
// insert(iter, x)⽤来向vector的任意迭代器iter处插⼊⼀个元素x
auto iter = array.begin()+1;
array.insert(iter,9);//将元素9插⼊array[1]的位置
//清空所有元素
array.clear();
//获取数组长度
array.size();
//判空
⼆. ⼆维数组
1. 数组初始化
(1)定义的同时初始化元素值
vector<int>cov(3);//定义3个值为0的数组,具体参见上述⼀维数组的初始化
int row =3;
vector<vector<int>>arr(row, cov);//row为⾏数,cov为列数上的数组,初始化成⼀个3*3的0元素矩阵
//或者换成另⼀种写法
int row =3;
vector<vector<int>>vec(row, vector<int>(col,1));//col代表元素个数,也就是列数,1为元素默认值,若只有col,则默认值为0
(2)先通过resize函数初始化容器⼤⼩,然后赋值
函数原型:
void resize (size_type n);
void resize (size_type n, const value_type& val);
第⼀个参数是将容器的元素变成n个,第⼆个参数是将这n个元素变成val(没有就是默认值)
注意:resize不适⽤于array
如果当前⼤⼩⼤于所要求的⼤⼩,容器后部的元素会被删除;如果当前⼤⼩⼩于新⼤⼩,会将新元素添加到容器后部。
vector<vector<int>> arr;
int row =3;
int col =3;
for(int i =0; i < arr.size(); i++){
arr[i].resize(col);//定义每⼀列的⼤⼩
}
for(int i =0; i < row; i++){
for(int j =0; j < col; j++){
arr[i][j]=1;
}
}
// 或者另⼀种写法
vector<vector<int>> arr;
int row =3;
int col =3;
for(int i =0; i < row; i++){
for(int j =0; j < col; j++){
arr[i][j]=1;
}
}
2. 数组的遍历操作
(1)迭代器遍历
for(auto iter = arr.begin(); iter != d(); iter++)
{
auto vec_tmp =*iter;
for(auto it = vec_tmp.begin(); it != d(); it++) cout <<*it <<" ";
cout << endl;
}
(2)下标遍历
for(i =0; i < arr.size(); i++)
{一维数组的定义和初始化
for(j =0; j < arr[0].size(); j++)
cout << arr[i][j]<<" ";
cout << endl;
}
3. 数组的其他操作
// 添加元素
arr[i].push_back(1);
// 如下类似
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论