数据结构漫游记:初识vector

嘿,各位技术潮人!好久不见甚是想念。生活就像一场奇妙冒险,而编程就是那把超酷的万能钥匙。此刻,阳光洒在键盘上,灵感在指尖跳跃,让我们抛开一切束缚,给平淡日子加点料,注入满满的

passion。准备好和我一起冲进代码的奇幻宇宙了吗?Let's go!

我的博客:yuanManGan

我的专栏:C++入门小馆 C言雅韵集 数据结构漫游记 闲言碎语小记坊

目录

我们之前了解过顺序表,但一般竞赛中我们不会使用它来实现这个数据结构,而是以更简单的结构,cpp中自带的vector类型。

一.什么是vector

vector其实是一个容器类似于string,有些地方把他叫做可变长数组。vector的底层是一个会自动扩容的顺序表。

二.vector类型的创建

使用vector类型时要包含头文件

cpp 复制代码
#include<vector>
struct node
{
	string a;
	int b;
};

const int N =10;
int main()
{
	vector<int>a1;//定义了一个叫a1的动态数组
	vector<int>a2(N);//定义了一个元素个数为N的数组
	//默认初始化为0
	vector<int>a3(N,1);//定义了一个元素个数为N的数组
	//并将其初始化为1
	vector<int>a4{ 1, 2, 3, 4, 5};
	//跟静态数组类似
	
	vector<string>a5;
	vector<node>a6
	vector<vector<int>>a7;//二维数组
	
	vector<int>a8[N];//创建一个大小为N的vector数组(二维)
	return 0;
}
cpp 复制代码
vector<变量类型>变量名; 

我们看到的前四个都是很常用的定义方式

a1 是个空的顺序表

a2是元素个数为N的可变长数组(存储的int类型)默认初始化为0

a3是元素个数为N的可变长数组默认初始化为1

a4初始化列表的创建方式

vector里面可以放任意类型的数据类型

cpp 复制代码
	vector<string>a5;
	vector<node>a6
	vector<vector<int>>a7;//二维数组

注意下面是创建了一个数组数组里存放的是vector类型。

cpp 复制代码
vector<int>a8[N];//创建一个大小为N的vector数组(二维)

三.vector里面的内置函数

1.size与empty

size在之前学习string时也学习过size在这里也是同样的

cpp 复制代码
#include<vector>
#include<iostream>
using namespace std;
int main()
{
	vector<int>a1;
	vector<int>a2(5);
	cout << a1.size() << endl;
	cout << a2.size() << endl;
	return 0;
}

这结果显然对的。

我们同时还可以用size()来遍历vector

cpp 复制代码
#include<vector>
#include<iostream>
using namespace std;
int main()
{
	vector<int>a(5);
	for(int i = 0; i < a.size(); i++)
	{
		a[i] = i;
	}
	for(auto e: a)
	{
		cout << e << " "; 
	}
	cout << endl;
	return 0;
}

而empty是检查vector是否为空,返回的是bool类型的值,为空返回true不为空返回false

同时我们也可以用范围for来遍历vector

2.迭代器begin和end

这里的用法和string大差不差所以没什么好讲的

3.push_back与pop_back

这些在string哪里也介绍的很清楚的也简单示范一下

这里是print函数的实现

4.resize和clear

resize是调整数组长度

而cleart是清空数组

这里就结束了。完结撒花!


相关推荐
nanxun8868 小时前
记一次诡异的 Docker 容器"串包"故障排查
java
用户15630681035111 小时前
Day01 | Java 基础(Java SE)
java
行者全栈架构师13 小时前
Maven dependency:tree 的 8 个高级用法
java·后端
行者全栈架构师17 小时前
IDEA 中 Maven 项目的 15 个红色报错快速解决方法
java·后端
令人头秃的代码0_017 小时前
mac(m5)平台编译openjdk
java
唐青枫2 天前
Java JDBC 实战指南:从 Connection 到事务和连接池
java
一个做软件开发的牛马2 天前
MyBatis-Plus 从零实战:完整搭建可运行 Demo,BaseMapper 零 SQL、Wrapper 条件构造、分页插件与代码生成器详解
java·后端
用户3721574261352 天前
Java 处理 PDF 图片:提取 PDF 中的图片,并压缩 PDF 图片体积
java
用户3721574261352 天前
Java 打印 Word 文档:从基础打印到高级设置
java
用户3521802454752 天前
当 Prompt 学会"热更新":Spring Boot × Nacos3 AI 实战
java·spring boot·ai编程