数据结构漫游记:初识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是清空数组

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


相关推荐
娇娇yyyyyy几秒前
QT编程(10): QLineEdit
开发语言·qt
Albert Edison5 分钟前
【ProtoBuf 语法详解】Any 类型
服务器·开发语言·c++·protobuf
喵叔哟16 分钟前
5. 【Blazor全栈开发实战指南】--Blazor组件基础
开发语言·javascript·ecmascript
罗超驿25 分钟前
Java数据结构_链表
java·数据结构·链表
海奥华230 分钟前
Rust初步学习
开发语言·学习·rust
小璐资源网1 小时前
C++中如何正确区分`=`和`==`的使用场景?
java·c++·算法
卢锡荣1 小时前
LDR6021Q 车规级 Type‑C PD 控制芯片:一芯赋能,边充边传,稳驭全场景
c语言·开发语言·ios·计算机外设·电脑
、BeYourself1 小时前
Scala 基础语法
开发语言·scala
AMoon丶1 小时前
C++模版-函数模版,类模版基础
java·linux·c语言·开发语言·jvm·c++·算法
SugarFreeOixi1 小时前
Matlab多个图窗重叠问题解决,平铺函数TileFigs
开发语言·matlab