作者简介:花想云,在读本科生一枚,致力于 C/C++、Linux 学习。
本文收录于 C++系列,本专栏主要内容为 C++ 初阶、C++ 进阶、STL 详解等,专为大学生打造全套 C++ 学习教程,持续更新!
相关专栏推荐:C语言初阶系列 、C语言进阶系列 、数据结构与算法
在数据结构与算法
的学习中,我们曾经认识过一个数据结构叫做顺序表
。而我们之前用C语言实现的动态顺序表
其实就是模仿STL
中的vector
容器,所以说我们其实对vector
已经不算是完全陌生了,那么接下来就一起来看看STL
中的vector
到底是什么以及如何使用吧!
在C++中,STL
(Standard Template Library)提供了一个名为vector
的容器类,它是一个动态数组
,能够存储同一类型的元素。vector
的实现在底层使用了动态内存分配
和内存管理
技术,因此它能够自动调整大小
,并且可以高效地插入和删除元素。
vector
提供了许多成员函数
,如push_back()
、pop_back()
、at()
、front()
、back()
等,这些函数可以用来操作vector
中的元素。vector
还支持迭代器,可以使用迭代器来访问vector
中的元素。此外,vector
还支持一些算法,如sort()
、find()
、count()
等,可以方便地对vector
中的元素进行排序、查找和计数等操作。
vector
是C++ STL
中最常用的容器之一,它可以代替数组,提供了更方便、更安全的操作方式,并且在插入和删除元素时不需要手动管理内存,因此被广泛应用于各种场景。
vector
之前首先需要包含头文件< vector >
;#include
vector
与string
类的使用不同,vector
并不是类型名,使用时需要指定vector
中的元素类型
,例如:vector< typename > 对象名
vector<int> v1; //元素类型为int
vector<char> v2; //元素类型为char
vector<string> v3; //元素类型为string
vector<vector<int>> v4; //元素类型为vector
vector<int> v1;
//使用push_back进行尾插
v1.push_back(1);
v1.push_back(2);
cout << v1[0] << endl; //使用下标+[]进行元素访问
cout << v1[1] << endl;
cout << v1.front() << endl; //获取第一个元素
cout << v1.back() << endl; //获取最后一个元素
//使用pop_back进行尾删
v1.pop_back();
cout << v1.size() << endl;
cout << v1.capacity() << endl;
for (int i = 0; i < v1.size(); i++)
{
cout << v1[i] << ' ';
}
cout << endl;
//使用范围for
for (auto e : v1)
{
cout << e << ' ';
}
cout << endl;
//v1.begin()——返回一个指向字符串第一个元素的迭代器
v1.insert(v1.begin() + 3, 30); //在第三个位置插入元素
v1.erase(v1.begin() + 4); //删除第四个位置的元素
at
:访问vector
中指定下标的元素,支持下标越界检查
; v1.at(0); //访问下标为0的元素
v1.at(2);
empty
:判断vector
是否为空; cout << v1.empty() << endl;
resize
:改变vector
的大小,若扩容,则还可以初始化扩容的部分; v1.resize(10, 0); //扩容,并初始化为0
reserve
:扩容; v1.reserve(20); //扩容,使capacity为20
emplace_back
:在vector
的末尾添加一个元素,效率比push_back
更高; v1.emplace_back(10); //尾插10
emplace
:在vector
的指定位置插入一个元素,效率比insert
更高; v1.emplace(v1.begin() + 4, 40); //在下标为4的位置插入40
swap
:交换两个vector
的元素; vector<int> v1;
vector<int> v2;
v1.swap(v2);
clear
:清空vector
中的所有元素。 v1.clear();
总结,以上函数接口在平时做题当中已经足够使用了,想要了解更多接口的使用,我们必须学会查阅官方文档。
点击下方个人名片,可添加博主的个人QQ,交流会更方便哦~
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓