21xrx.com
2024-11-22 02:33:33 Friday
登录
文章检索 我的文章 写文章
C++ 容器 vector 函数详解
2023-07-08 12:15:07 深夜i     --     --
C++ 容器 vector 函数 详解

C++ 作为一门面向对象的编程语言,拥有许多常用的容器,如 vector、list、map、set 等。在其中,vector 是最常用的容器之一。本文将详细介绍 vector 容器的使用及其相关函数。

1. vector 容器的定义和初始化

vector 是 C++ STL(STandard Library)标准模板库中的一个类模板,定义如下:


template <class T, class Allocator = allocator<T>> class vector;

其中,T 为 vector 中存储的数据类型,Allocator 为内存分配器,可选,默认为 std::allocator 。vector 容器的初始化方式有多种,如:


std::vector<int> arr; // 默认初始化,空 vector

std::vector<int> arr(10, 0); // 初始化 10 个值为 0 的元素

std::vector<int> arr = 2; // 初始化列表

std::vector<int> arr2(arr); // 拷贝初始化

2. vector 容器基本操作

向 vector 中添加元素可以使用 push_back 函数:


std::vector<int> vec;

vec.push_back(1);

vec.push_back(2);

vec.push_back(3);

也可以使用下标赋值的方式添加元素:


std::vector<int> vec(3); // 初始化 3 个元素,值为默认值

vec[0] = 1;

vec[1] = 2;

vec[2] = 3;

但是,如果使用下标访问 vector 中不存在的元素,则会发生错误。因此,在使用下标访问 vector 时,应该先判断其范围。可以使用 vector 容器的 size 函数获取 vector 中元素的个数:


std::vector<int> vec = 3;

for (int i = 0; i < vec.size(); i++) {

  std::cout << vec[i] << ' ';

}

向 vector 中移除元素可以使用 pop_back 函数:


std::vector<int> vec = 2;

vec.pop_back(); // 移除最后一个元素,此时 vec 中只有 2

也可以使用 erase 函数根据元素的下标或者迭代器删除指定的元素:


std::vector<int> vec = 2;

vec.erase(vec.begin() + 1); // 移除下标为 1 的元素,此时 vec 中只有 1

3. vector 容器的相关函数

vector 容器还提供了许多常用的函数,如:

- size 函数:获取 vector 中元素的个数。

- empty 函数:判断 vector 是否为空。

- reserve 函数:预分配 vector 的容量,避免不必要的内存分配及拷贝操作。

- clear 函数:清空 vector 中的所有元素。

其中,reserve 函数在 vector 容器中的使用非常重要。由于 vector 是通过动态数组来实现的,因此在向 vector 中添加元素时,如果 vector 已经达到了其容量限制,就会触发扩容操作,重新分配一块更大的内存空间,并将原来的元素拷贝到新的内存空间中。这个操作的复杂度为 O(N),其中 N 为 vector 中元素的个数,因此可以使用 reserve 函数预分配 vector 的容量,避免不必要的内存分配及拷贝操作,提高程序的性能。


std::vector<int> vec;

vec.reserve(100);

// 现在 vec 的容量为 100,但是实际上它并没有元素

4. 总结

vector 是 C++ STL 中最常用的容器之一,它支持动态数组的特性,并提供了许多常用的函数,如 push_back、pop_back、erase、size、reserve 和 clear 等。在使用 vector 容器时,应该注意其内存分配及拷贝操作的复杂度,合理使用 reserve 函数预分配 vector 的容量,以提高程序的性能。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复