c++中vector向量的使用

一、vector
c++中有一个比数组操作更方便的容器vector,vector可以快速实现对数据的查找和处理。

1、向量的初始化

//对向量进行简单的初始化操作
#include <iostream>
#include <vector>
int main()
{
	vector<int> vc; //定义向量,int可换为其他类型
	/*******
	*	vector<int> vc(10); //初始状态申请十个元素
	*	vector<int> vc(vector<int> b); // 生成 b 的副本
	*	vector<int> vc(10, 3); // 生成 10 个值为 3 的元素
	*******/
	for (int i = 0; i < 10; i++) // 也是赋值的一种,用循环赋值
	{
		vc.push_back(i);//在向量末尾追加元素
	}
		//结果:0 1 2 3 4 5 6 7 8 9
	return 0;
}

2、赋值
vc.push_back() 只能在向量末尾追加元素,vc.insert()则可以在向量的任何位置增加元素

	// 1)用函数向向量中插入元素
		vector<int>::iterator it;
		it = vc.begin();//vc.begin()函数可用于获取向量的第一个元素的迭代器
				//vc.end()函数可以用于获取向量末尾的后一个位置的迭代器
				//(注意:是末尾的后一个位置,而不是末尾)
		<1>
		vc.insert(it + vc.size() - 3, 11);
				// 在迭代器位置插入元素
				//vc.size()可以用于获取 vc的有效长度(元素个数)
			// 结果: 0 1 2 3 4 5 6 11 7 8 9
		<2>
		vc.insert(it, 3, 5);
				// 从 it 位置开始,插入 3 个大小为 5 元素
			// 结果:5 5 5 0 1 2 3 4 5 6 11 7 8 9
		<3>
		vector<int> b(3,4);
		vc.insert(it, b.begin(), b.end() - 2);
				// 在 it 处添加 b 向量中下标在区间 [b.begin(), b.end() - 2) 的元素,注意右面是开区间
			// 结果: 4 5 5 5 0 1 2 3 4 5 6 11 7 8 9
	// 2)用迭代器进行赋值
		*(it) = 5;
			//结果:5 1 2 3 4 5 6 11 7 8 9

3、对向量内容的处理

1)获取元素

	<1>用函数获取

	cout << vc.front(); // 返回向量的第一个元素
	cout << vc.back(); // 返回向量的最后一个元素
		// 结果:1 9
	<2>用迭代器获取

	it = vc.begin();
	cout << *(it + n); // 返回第 n + 1 个元素

	<3>用下标获取(用下标的方式不可进行赋值操作)

	cout << vc[n]	// 返回下标为 n 的元素,及第 n + 1 个元素

2)删除元素

	it = vc.begin();
	<1>
	vc.erase(it);	// 删除 it 迭代器出的元素
		// 结果:1 2 3 4 5 6 11 7 8 9
	<2>
	vc.erase(it, it + 2);	// 删除迭代器区间 [it,it + 2) 内的元素
		// 结果:3 4 5 6 11 7 8 9
	<3>
	vc.pop_back();	// 删除最后一个元素
		// 结果:3 4 5 6 11 7 8
	<4>
	vc.clear();	//清空向量内的所有元素

4、向量的其他相关函数

	vc.empty(); // 判断向量是否为空,为空返回 0
	vc.swap(vector<int> b); // 交换 vc 和 b 向量的地址及内容
	swap(vc, vector<int> b); // 也可以实现对 vc 和 b 的地址和内容的交换
	swap(*(it), *(it + 3)); // 交换向量内的两个元素 
	vc.max_size(); // 可以获取向量可以存储的最大个数
	

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值