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 != array.end(); 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();
array.erase(iter);//删除array[0]
//	3.通过erase(first,last),批量删除一个区间[first, last)内的所有元素
array.erase(array.begin() + 1, array.begin() + 3);//删除array[1],array[2]
//插入元素
//	insert(iter, x)用来向vector的任意迭代器iter处插入一个元素x
auto iter = array.begin() + 1;
array.insert(iter, 9);//将元素9插入array[1]的位置
//清空所有元素
array.clear();
//获取数组长度
array.size();
//判空
array.empty();

二. 二维数组
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;
	arr.resize(row);//定义行数大小
	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;
	arr.resize(row, vector<int>(cov, 1));
	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 != arr.end(); iter++)
    {
        auto vec_tmp = *iter;
        for(auto it = vec_tmp.begin(); it != vec_tmp.end(); 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);
	//	如下类似
  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值