【教程】C++语言基础学习笔记(五)——Vector向量

文首标志
写在前面:
如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持!


【C++语言基础学习】系列文章

第一章 《项目与程序结构》
第二章 《数据类型》
第三章 《运算符》
第四章 《流程控制》
第五章 《Vector向量》
第六章 《String字符串》
第七章 《Array数组》
第八章 《函数》
第九章 《指针》
第十章 《结构体》



Vector(向量)是一个封装了动态大小数组的顺序容器(Sequence Container),跟任意其他类型容器一样,能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。
Vector容器有以下特性。

  1. 顺序序列:顺序容器的元素按照严格的线性顺序排序,可以通过元素在序列中的位置访问对应的元素。
  2. 动态数组:支持对序列中的任意元素进行快速直接访问,甚至可以通过指针进行该操作,提供了在序列末尾相对快速地添加/删除元素的操作。
  3. 能够感知内存分配器(Allocator-aware)容器使用一个内存分配器对象来动态地处理它的储存需求。

一、Vector初始化

想要使用vector,就必须添加类似<iostream>的系统库头文件<vector>

#include <vector>

而在创建vector对象时遵循以下初始化语法。

std::vector<类型> 变量名 = {元素1, 元素2, ...};

同时,若想使用重复值初始化,也可以使用以下语法。

std::vector<类型> 变量名(个数,);

使用test.cpp文件进行代码实验。

#include "test.h"
#include <iostream>
#include <vector>

using namespace std;

void test::Test()
{
	vector<int> vec1;// 空的整型vec1,无元素
	vector<float> vec2(3);// 容器大小为3个元素的浮点型vec2,编译器自动默认为初始值
	vector<string> vec3(3, "a");// 容器大小为3个元素的字符串vec3,并且初始值为a
	vector<string> vec4(vec3);// 令字符串vec4复制vec3的内容
	cout << "vec1:" << endl;
	for (int i = 0; i < vec1.size(); i++)
	{
		cout << vec1[i] << endl;
	}
	cout << "vec2:" << endl;
	for (int i = 0; i < vec2.size(); i++)
	{
		cout << vec2[i] << endl;
	}
	cout << "vec3:" << endl;
	for (int i = 0; i < vec3.size(); i++)
	{
		cout << vec3[i] << endl;

	}
	cout << "vec4:" << endl;
	for (int i = 0; i < vec4.size(); i++)
	{
		cout << vec4[i] << endl;
	}
}

以上代码建立了四个vector容器,第一个是空的整型vector,第二个则是容器大小为3个元素的浮点型vector,第三个是容器大小为3个元素并且初始值都为a的字符串vector,最后的第四个vector则复制第三个vector的内容。然后遍历打印各个vector的内容。
返回结果如下。

vec1:
vec2:
0
0
0
vec3:
a
a
a
vec4:
a
a
a

由返回结果可以看到,vec1果然为空;vec2虽然返回了三个元素,但由于没有设置初始值,所以元素初始值均默认为0;vec3则返回了设置的初始值a,相应的vec4完全相同地返回了和vec3同样的结果。

二、Vector成员函数

Vector容器在使用时,提供了许多实用的成员函数来操作和管理向量(vector),以下是常用的std::vector的成员函数。

函数描述
push_back()将元素添加到向量的末尾
pop_back()删除向量末尾的元素
size()返回向量中元素的数量
resize()更改向量中元素的数量
max_size()返回向量所能容纳的最大元素数量
capacity()返回向量当前占用空间大小
reserve()更改向量当前占用空间大小
at()访问指定索引处的元素,提供越界检查
begin()返回向量开始指针,即第一个元素头部的指针
end()返回向量结束指针,即最后一个元素尾部的指针
rbegin()返回反转向量开始指针,即最后一个元素头部的指针
rend()返回反转向量结束指针,即第一个元素尾部的指针
front()访问向量第一个元素
back()访问向量最后一个元素
clear()清空向量中的所有元素
erase()删除向量中指定位置的一个或多个元素
empty()检查向量是否为空
swap()与另一个向量交换数据

对于以上所罗列出的各种vector成员函数,并非所有都非常常用,以下仅对较为常用的几个成员函数作出介绍。
使用test.cpp代码进行实验。

#include "test.h"
#include <iostream>
#include <vector>

using namespace std;

void test::Test()
{
	vector<int> vec1;
	// empty()方法
	if (vec1.empty())
	{
		cout << "vec1是空" << endl;
	}
	// push_back()方法
	vec1.push_back(1);
	vec1.push_back(99);
	// pop_back()方法
	vec1.pop_back();
	// size()方法
	for (int i = 0; i < vec1.size(); i++)
	{
		cout << vec1[i] << endl;
	}
}

返回结果如下。

vec1是空
1

在没有设置vec1的内容时,使用了一个empty()方法来返回vec1是否为空的字符串;随后的push_back()方法添加1和99两个元素,但之所以没有返回1和99,两个for循环的遍历结果,是因为之后用的pop_back()删除了尾部的99元素。


我是EC,一个永远在学习中的探索者,关注我,让我们一起进步!

文末标志

  • 23
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值