vector介绍与使用

vector概念

  • vector可以简单理解为一个数组,但又不仅仅是一个数组,数组的大小一般都是固定的,但vector可以动态增长,并且vector也有许多与stl其他容器一致的接口。

vector的创建

使用vector要包含vector头文件,vector中可以存储任意类型,在创建变量时就要指定存储类型。

#include <iostream>
#include <string>
#include <vector>//使用vector必须要包含头文件

using namespace std;

int main() {
	vector<int> v;//无参构造,存储类型为int型
	vector<int> v1(3, 0);//舒适化3个0
	vector<int> v2(v1);//拷贝构造
	vector<int> v3(v1.begin(), v2.begin());//迭代器构造
	vector<string> v4;//无参构造,存储类型为string型
	return 0;
}

vector的遍历

vector有三种常见的遍历方式:

	int main() {
	vector<int> v1(3, 0);//舒适化3个0
	
    //第一种,通过下标访问:
	for (size_t i = 0; i < v1.size(); i++) {
		cout << v1[i] << " ";
	}
	cout << endl;

	//第二种,范围for循环
	for (int num : v1) {
		cout << num << " ";
	}
	cout << endl;

	//第三种,迭代器访问
	vector<int>::iterator it = v1.begin();
	while (it != v1.end()) {
		cout << *it << " ";
		it++;
	}
	cout << endl;
	return 0;
}

在这里插入图片描述

第一种方式,vector实际上是一个类,但是为了使用习惯,C++在类里面重载了[]运算符,使其能像数组一样通过下标访问元素。
第二种方式,范围for实际上在底层还是转换为迭代器来遍历数组元素。
第三种方式,这种访问方式是STL库所有容器通用的访问方式,每个容器都可以通过对应的迭代器访问。

vector常用接口

迭代器接口


vector v;
v.begin()//返回v的第一个元素的迭代器

v.end()//返回v的最后一个位置的下一个位置的迭代器

v.rbegin()//反向迭代器,返回v的最后一个位置的迭代器

v.rend()//返回v的起始位置的前一个迭代器

vector空间相关接口

vector v;

v.size()//返回v当前元素个数

v.capacity()//返回v的空间大小

v.empty()//若v为空,返回true,否则返回false

v.resize()//通过该函数改变v的有效元素个数

//v.resize(4,2)//将v的有效元素个数置为4,若原来元素个数大于4,则只保留4个元素,
//若原来元素个数小于4,则增加到4个,增加的元素默认值为2.

v.reverse()//将v的空间扩容至指定数,只可以扩大容量,不可以缩小容量!

vector增删查改接口

vector v;
v.push_back()//尾插一个数据

v.pop_back()//尾删一个数据

v.erase(v.begin())//删除指定位置数据,传入数据为迭代器,可删除单个位置,也可删除一段区间。
//注意该函数可能会使迭代器失效,使用时要多加注意。

find()//vector没有内置的find函数,只能使用全局函数。
//使用该函数要添加<algorithm>头文件

v.insert()//指定位置插入数据

v.swap()//交换两个vector
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值