C++STL之vector

本文详细介绍了C++标准库中的Vector容器的使用方法,包括如何创建Vector对象、使用下标和迭代器访问元素、元素的插入与删除操作、以及如何使用reverse()和sort()等算法对Vector中的元素进行排序和反转。

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

vector容器可以像数组那样进行随机的访问,还可以在尾部进行插入元素,是一种简单高效的容器,完全可以替换掉数组。

vector具有内存自动管理的功能,对于元素的插入和删除,可以动态的整理所占用的内存空间。

vector容器的下标也是从0开始计数的。

vector容器的定义:

1. 可以事先固定大小,事后可以随时间调整大小。

2. 事先不定义,随时使用push.back()方法从尾部扩张元素

3. 使用insert()在某个元素位置前插入新元素。

vector容器有两个重要的方法:

1. begin() 返回的是首元素位置的迭代器

2. end() 返回的是最后一个元素的下一个元素位置的迭代器


* 创建vector对象

1. 不指定容器的元素个数       

vector<int> v;

2. 指定元素个数

下标是0-9,并且每个元素默认初始值为0

vector<double> v(10);

3.指定元素个数,并且为每个元素赋初始值

vector<double> v(10, 8.6);


*下标方式访问vector元素,用迭代器访问vector元素

常使用迭代器配合循环语句来对vector对象进行遍历访问,迭代器的类型一定要与它要遍历的vector对象的元素类型一致

#include<iostream>
#include<vector>
using namespace std;

int main()
{
	vector<int> v(3);
	
	//通过下标访问 
	v[0] = 2;
	v[1] = 7;
	v[2] = 9;
	
	vector<int>::iterator it;//定义迭代器变量
	for(it = v.begin(); it != v.end(); it ++)
		cout<<*it<<" ";
	cout<<endl;
	return 0; 
}

*元素的插入

insert()方法可以在vector对象的任意位置前插入一个新的元素,同时,vector自动扩张一个元素空间 ,插入位置后的所有元素依次向后挪动一个位置,

insert()方法要求插入的位置,是元素的迭代器位置,而不是元素的下标。

#include<iostream>
#include<vector>
using namespace std;

int main()
{
	vector<int> v(3);
	v[0] = 2;
	v[1] = 7;
	v[2] = 9;
	
	//在最前面插入新元素,新元素值为8 
	v.insert(v.begin(), 8);
	
	//在第2个元素前插入新元素1,vector从0开始计数
	v.insert(v.begin()+2, 1);
	
	vector<int>::iterator it;
	for(it = v.begin(); it != v.end(); it ++)
		cout<<*it<<" ";
	cout<<endl; 
	return 0;
}

*元素的删除

erase()方法可以删除vector中迭代器所指的一个元素或一段区间中的所有元素。

clear()方法则一次性删除vector中的所有元素

#include<iostream>
#include<vector>
using namespace std;

int main()
{
	vector<int> v(10);
	for(int i = 0; i < 10; i ++)
		v[i] = i;
	
	//删除第2个元素,从0开始计数
	v.erase(v.begin()+2); 
	
	vector<int>::iterator it;
	for(it = v.begin(); it != v.end(); it ++)
		cout<<*it<<" ";
	cout<<endl; 
	
	//删除迭代器第1个到第5个区间的所有元素 
	v.erase(v.begin()+1, v.begin()+5);
	
	for(it = v.begin(); it != v.end(); it ++)
		cout<<*it<<" ";
	cout<<endl; 
	
	//清空向量
	v.clear();
	cout<<v.size()<<endl; 
	return 0; 
}

*使用reverse()反向排列算法

reverse()反向排列算法,需要头文件#include<algorithm>

reverse()算法可将向量中某段迭代器区间元素反向排列

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int main()
{
	vector<int> v(10);
	
	for(int i = 0; i < 10; i ++)
		v[i] = i;
	
	//反向排列向量从头到尾的元素
	reverse(v.begin(), v.end());
	
	vector<int>::iterator it;
	for(it = v.begin(); it != v.end(); it ++)
		cout<<*it<<" ";
	cout<<endl;
	
	//反向排列向量前5个元素 
	reverse(v.begin(), v.begin()+5);
	for(it = v.begin(); it != v.end(); it ++)
		cout<<*it<<" ";
	cout<<endl;
	return 0;
}

*使用sort()算法对向量元素进行排序

使用sort()算法,需要申明#include<algorithm>

sort算法要求使用随机访问迭代器进行排序,在默认情况下,对向量元素进行升序排列。

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int main()
{
	vector<int> v;
	
	for(int i = 0; i < 10; i ++)
		v.push_back(9-i);
	
	//输出排序前 
	for(int i = 0; i < 10; i ++)
		cout<<v[i]<<" ";
	cout<<endl;
	
	//排序 升序排序
	sort(v.begin(), v.end());
	for(int i = 0; i < 10; i ++)
		cout<<v[i]<<" ";
	cout<<endl;
	return 0; 	
}

还可以自己设计排序比较函数,然后,吧这个函数指定给sort算法,sort就根据这个比较函数指定的排序规则进行排序,设计一个排序比较函数cmp

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

//自行设计排序比较函数:对元素进行降序排列
bool cmp(const int &a, const int &b)
{
	if(a != b)
		return a > b;
	else
		return a > b;
} 


int main()
{
	vector<int> v;
	
	for(int i = 0; i < 10; i ++)
		v.push_back(i);
	
	//输出排序前 
	for(int i = 0; i < 10; i ++)
		cout<<v[i]<<" ";
	cout<<endl;
	
	//排序 升序排序
	sort(v.begin(), v.end(), cmp);
	for(int i = 0; i < 10; i ++)
		cout<<v[i]<<" ";
	cout<<endl;
	return 0; 	
}

*向量的大小

使用size()方法可以返回向量的大小,即向量元素的个数

使用empty()方法返回向量是否为空。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值