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

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


相关推荐
喵手2 小时前
玩转Java网络编程:基于Socket的服务器和客户端开发!
java·服务器·网络
再见晴天*_*3 小时前
SpringBoot 中单独一个类中运行main方法报错:找不到或无法加载主类
java·开发语言·intellij idea
lqjun08275 小时前
Qt程序单独运行报错问题
开发语言·qt
hdsoft_huge6 小时前
Java & Spring Boot常见异常全解析:原因、危害、处理与防范
java·开发语言·spring boot
风中的微尘7 小时前
39.网络流入门
开发语言·网络·c++·算法
雨白7 小时前
Java 多线程指南:从基础用法到线程安全
android·java
Hungry_Shark7 小时前
IDEA版本控制管理之使用Gitee
java·gitee·intellij-idea
赛姐在努力.7 小时前
《IDEA 突然“三无”?三秒找回消失的绿色启动键、主菜单和项目树!》
java·intellij-idea
未来之窗软件服务7 小时前
幽冥大陆(二)RDIFSDK 接口文档:布草洗涤厂高效运营的技术桥梁C#—东方仙盟
开发语言·c#·rdif·仙盟创梦ide·东方仙盟
猎板PCB黄浩7 小时前
从废料到碳减排:猎板 PCB 埋容埋阻的绿色制造革命,如何实现环保与性能双赢
java·服务器·制造