C++ Vector的用法 附带演示代码 (注释有代码详细介绍)

一.常用函数

头文件:#include<vector>

一.常用函数:

1.1.放入元素

push_back(value):
为矢量最后一个元素赋予值,若矢量已满,将自动调整大小压入矢量中。

1.2.删除元素

pop_back():
从矢量中删除最后一个元素

1.3.取出元素个数

size():
返回矢量中元素个数

1.4.取出某位置元素

at(position):
返回位置为position的元素(位置从0开始计)
例如:
vector_name.at(1)vector_name[1]

1.5.删除迭代器指向的元素

erase(iter):
删除iter指向的矢量元素

1.6.判断矢量是否为空

empty():
为bool类型,矢量为空则返回true,不为空返回false

1.7.清空矢量中所有元素

clear():
可以将矢量中的元素全部删除掉

1.8.指向第一个元素的迭代器

begin()

1.9.指向最后一个元素的迭代器

end()

1.10.插入元素到矢量中指定位置

(1)insert(iter,value):
将value值插入到iter迭代器指向元素之前
(2)insert(iter,n,value):
将value值的n个副本插入到iter迭代器指向元素之前

1.11.调整矢量大小

(1)resize(n):
调整矢量中值的个数为n。
若原本数的个数多于n则删除后面大于n的部分的数.
若少于n则扩充。默认值不确定。
(2)resize(n,default_value):同(1),但扩充时,新元素默认值调整为default_value值。

二.常用算法

头文件#include<algorithm>

2.1.排序算法

sort(iter1,iter2):
对迭代器iter1到iter2指向范围内的数进行排序,可用于矢量(vector)。
(默认为从小到大排序)
(从大到小排序在后面的代码示例中有)

2.2.查找算法

find(iter1,iter2,value):
从迭代器iter1到iter2指向的范围内寻找value值,若找到将返回其迭代器。否则将返回iter2迭代器。

常用的函数和算法就说到这里,其实还有一些函数及算法,但貌似不是很常用到,如果有需要的可以留言,我会再更新它们的。

三.演示代码。

(注释中有详细介绍,建议复制到编译器上边调试边学)

#include<iostream>
//头文件 vector
#include<vector>
//头文件 algorithm 用于实现排序 查找
#include<algorithm>

//引用自:https://blog.csdn.net/weixin_43350051/article/details/97945841
bool cmp(int x, int y) ///cmp函数传参的类型不是vector<int>型,是vector中元素类型,即int型
{
	return x > y;
}

//通过函数对vector进行操作需要加上& 如 (vector<int>& a)

using namespace std;
int main()
{
	//定义vector

	//定义容器数组 此处为含有5个容器的容器数组
	//vector<int>a(5);

	//定义容器数组并且设置默认值 此处为含有5个容器的容器数组且默认值为10
	//vector<int>a(5, 10);

	//定义容器数组并分别设置默认值 此处为含有3个容器的容器数组默认值分别为 2 3 4
	//vector<int>a{2,3,4};

	//定义单个容器
	vector<int> a;

	//定义一个二维向量
	//未进行扩展
	//vector<vector<int>>b;

	for (int i = 0; i < 10; i++)
	{
		//向容器中压入元素
		a.push_back(-i * 10);

	}
	a[9] = 1;

	//遍历方法1
	
	cout << "原容器:" << endl;
					  //a.size() :a矢量的元素个数
	for (int i = 0; i < a.size(); i++)
	{
		//访问vector元素的方法1:用[]取值
		cout << a[i] << "\t";
	}
	//遍历方法2
	//for (it = a.begin(); it != a.end(); it++)
		//访问vector元素的方法2:用指针取值
	//	cout << *it << "\t";

	//遍历方法3 
	/*for (int val : a)
	{
		cout << val << "\t";
	}*/

	//可用以下方法为a向量赋值
	/*
	for (int &val : a)
	{
		cin >> val;
	}
	*/

	//排序 从小到大
	//头文件 algorithm
	cout << endl << "排序后:" << endl;
	//加上cmp函数 为从大到小排序
	sort(a.begin(), a.end()/*, cmp*/);


	//展示排序结果是否正确
	for (int i = 0; i < a.size(); i++)
	{
		cout << a[i] << "\t";
	}

	//迭代器定义 与find函数的使用 需要algorithm头文件
	vector <int>::iterator ite;
	ite = find(a.begin(), a.end(), 1);
	cout << endl<<"元素1的前一个值:"<<*--ite;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值