C++ STL 中将 Vector 转换为 Array 的不同方法

2025年5月14日 | 阅读3分钟

在本文中,我们将讨论在C++中以不同方式将vector转换为array。但在介绍其实现之前,我们必须了解C++中的array和vector。

array和vector都将元素存储在连续的内存位置中。在C++中,array是静态的,并且具有固定大小。这意味着一旦在程序中声明了array的大小,在程序运行时就无法更改它,即使这样做会减少程序的容量。

另一方面,vector是动态数组,更适应程序需求。它们可以根据程序需求动态调整自身大小,例如当从vector中添加或删除元素时。元素在array和vector中都存储在相邻的内存区域中,以便迭代器或指针可以访问它们。

转换的需求-

  1. 与vector相比,array更高效。
  2. array访问元素比vector更快;即,array访问元素所需的时间比vector少。
  3. vector使用更多的内存。

将vector转换为array的不同方法(4种)

  1. 使用for循环
  2. 使用copy()函数
  3. 使用transform()函数
  4. 使用data()函数

这里,我们将逐一讨论这些不同的方法。

1. 使用for循环

让我们举一个例子来说明如何在C++中使用for循环将vector转换为array。

输出

Different Ways to Convert Vector to Array in C++ STL

2. 使用copy()函数

基于范围,C++的copy()方法可以在对象之间复制元素。例如,如果我们将vector元素在范围[start, end]中发送到copy()函数,并迭代到第一个array成员,则vector的所有项都将复制到array中。

示例

让我们举一个例子来说明如何在C++中使用copy()函数将vector转换为array。

输出

Different Ways to Convert Vector to Array in C++ STL

3. 使用transform()函数

transform()函数是C++ STL库的一部分。此函数接受输入范围、输出迭代器和一元函数作为三个参数。它本质上应用一元函数,迭代每个元素,并返回一个输出迭代器。

一元操作

此函数将结果存储在输出array中,并对范围[start, end]中的成员执行一元操作(ary_op)。它需要指向第一个array的起始和结束位置的指针以及输出array的起始位置。

示例

二元操作

此函数将结果存储在输出array中,并对范围[start, end]中的元素执行二元操作binary_op。它需要指向第一个array的起始和结束位置的指针,第二个array的起始位置,输出array和二元操作。

示例

示例

让我们举一个例子来说明如何在C++中使用transform()函数将vector转换为array。

输出

Different Ways to Convert Vector to Array in C++ STL

4. 使用data()函数

vector的data()方法在C++中返回指向内部vector array的指针。因为在我们的示例中它返回一个内部vector array,所以对它进行的任何修改也会影响我们的原始vector。

示例

让我们举一个例子来说明如何在C++中使用data()函数将vector转换为array。

输出

Different Ways to Convert Vector to Array in C++ STL