写在前面:
如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持!
【C++语言基础学习】系列文章
第一章 《项目与程序结构》
第二章 《数据类型》
第三章 《运算符》
第四章 《流程控制》
第五章 《Vector向量》
第六章 《String字符串》
第七章 《Array数组》
第八章 《函数》
第九章 《指针》
第十章 《结构体》
文章目录
- 【C++语言基础学习】系列文章
- 一、Vector初始化
- 二、Vector成员函数
Vector(向量)是一个封装了动态大小数组的顺序容器(Sequence Container),跟任意其他类型容器一样,能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。
Vector容器有以下特性。
- 顺序序列:顺序容器的元素按照严格的线性顺序排序,可以通过元素在序列中的位置访问对应的元素。
- 动态数组:支持对序列中的任意元素进行快速直接访问,甚至可以通过指针进行该操作,提供了在序列末尾相对快速地添加/删除元素的操作。
- 能够感知内存分配器(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,一个永远在学习中的探索者,关注我,让我们一起进步!