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

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


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

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


文章目录

  • 【C++语言基础学习】系列文章
  • 一、Vector初始化
  • 二、Vector成员函数


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

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

一、Vector初始化

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

#include 

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

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

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

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

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

#include "test.h"
#include 
#include 

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 
#include 

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,一个永远在学习中的探索者,关注我,让我们一起进步!

文末标志

你可能感兴趣的:(【语言】C++,学习,笔记,c++)