C++中的vector用法详解

本文详细介绍了C++标准模板库中的Vector容器,包括其特点、基本操作及如何高效使用等。通过实例展示了如何创建、访问、修改Vector中的元素,并提供了查找特定元素的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、vector介绍

1、vector(向量)

2、变量声明

二、详细的函数实现功能

1、建立一个容纳1-1000值的vector

2、使用下标访问元素

3、使用迭代器访问元素

4、插入和删除元素

三、使用vector

1、判断vector中某一元素是否存在

2、返回vector中某一个元素的下标


一、vector介绍

1、vector(向量)

C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的。头文件#include<vector>。

2、变量声明

(1) 声明一个int向量以替代一维的数组:vector <int> a;(等于声明了一个int数组a[],大小没有指定,可以动态的向里面添加删除)。(2)用vector代替二维数组.其实只要声明一个一维数组向量即可,而一个数组的名字其实代表的是它的首地址,所以只要声明一个地址的向量即可,即:vector <int *> a.同理想用向量代替三维数组也是一样,vector <int**>a;再往上面依此类推.

二、详细的函数实现功能

vector<int> ve

ve.clear()             清空容器中所有数据。
ve.empty()             判断容器是否为空。
ve.erase(pos)          删除pos位置的数据
ve.erase(beg,end)      删除[beg,end)区间的数据
ve.front()             传回第一个数据。
ve.back()              传回最后一个数据,不检查这个数据是否存在
ve.insert(pos,elem)    在pos位置插入一个elem拷贝
ve.pop_back()          删除最后一个数据。
ve.push_back(elem)     在尾部加入一个数据。
ve.resize(num)         重新设置该容器的大小
ve.size()              回容器中实际数据的个数。
ve.begin()             返回指向容器第一个元素的迭代器
ve.end()               返回指向容器最后一个元素的迭代器
ve.reserve()           改变当前vecotr所分配空间的大小
ve.capacity()          容器容量
ve.at(idx)             传回索引idx所指的数据,如果idx越界,抛出out_of_range
ve.assign(beg,end):    将[beg; end)区间中的数据赋值给ve
ve.assign(n,elem):     将n个elem的拷贝赋值给ve
ve.~ vector <Elem>()    销毁所有数据,释放内存

1、建立一个容纳1-1000值的vector<int>

vector<int> v;
for (int i = 1; i <= 1000; ++i)
{
  v.push_back(i);
}	

在大多数STL实现中,这段代码在循环过程中将会导致2到10次重新分配。

vector<int> v;
v.reserve(1000); //使用reserve()函数提前设定容量大小
for (int i = 1; i <= 1000; ++i)
{
  v.push_back(i);
}	

这在循环中不会发生重新分配。

2、使用下标访问元素

cout<<ve[0]<<endl;   //记住下标是从0开始的

3、使用迭代器访问元素

vector<int>::iterator it; //用来遍历或者指向容器里面的元素
for(it=ve.begin();it!=ve.end();it++)

{
  cout<<*it<<endl;
}

4、插入和删除元素

  • ve.insert(ve.begin()+i,a); 在第i+1个元素前面插入a;
  • ve.erase(ve.begin()+2); 删除第3个元素
  • ve.erase(ve.begin()+i,ve.end()+j); 删除区间[i,j-1]; 区间从0开始

三、使用vector

1、判断vector中某一元素是否存在

//判断vector中某一元素是否存在
bool is_element_in_vector(vector<string> v, string str)
{
	vector<string>::iterator it;
	it = find(v.begin(), v.end(), str);
	if (it != v.end()) {
		return true;
	}
	return false;
}

2、返回vector中某一个元素的下标

//返回vector中某一个元素的下标
int element_index(vector<string> v, string str)
{
	vector<string>::iterator it;
	it = find(v.begin(), v.end(), str);
	if (it != v.end())
	{
		int res = it - v.begin();
		return res;
	}
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

探模之翼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值