如何在 C++ 中初始化向量?

2025年4月10日 | 阅读 4 分钟

Vector 可以像数组一样存储多个数据值,但它们只能存储对象引用,而不是原始数据类型。它们存储对象的引用意味着它们指向包含数据的对象,而不是存储数据。与数组不同,vector 不需要用大小进行初始化。它们可以根据对象引用的数量灵活调整,这得益于容器自动处理它们的存储。容器将保留一份内部的 alloc 副本,用于分配生命周期存储。Vector 可以使用迭代器进行定位和遍历,因此它们被放置在连续存储中。Vector 还具有安全功能,与数组不同,可以防止程序崩溃。我们可以为 vector 预留空间,但不能为数组预留空间。数组不是类,但 vector 是类。在 vector 中,元素可以被删除,但在数组中不能。

Vector 以模板类的形式与父级“集合类”一起发送。数组是具有其特定属性的较低级别数据结构。Vector 具有函数和构造函数;它们不是基于索引的。它们与基于索引的数据结构数组相反。在这里,最低地址提供给第一个元素,最高地址提供给最后一个元素。Vector 用于对象的插入和删除,而数组用于频繁访问对象。数组是节省内存的数据结构,而 Vector 则以管理存储和动态增长为代价使用更多的内存。Vector 访问元素需要更多时间,但数组不是这种情况。

有四种方法可以初始化 C++ 中的 vector

  • 逐个输入值
  • 使用 vector 类的重载构造函数
  • 借助数组
  • 使用另一个已初始化的 vector

逐个输入值 -

可以使用 vector 类方法 'push_back' 逐个插入 vector 中的所有元素。

算法

代码 -

输出

1 2 3 4 5 6 7 8 9 10

使用重载构造函数 -

当 vector 中有多个相同值的元素时,我们使用此方法。

使用 vector 类的重载构造函数 -

当 vector 中填充了多个相同值的元素时,主要使用此方法。

算法

代码 -

输出

8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8 
8

借助数组 -

我们将一个数组传递给 vector 类的构造函数。该数组包含将填充 vector 的元素。

算法 -

代码 -

输出

9 
8 
7 
6 
5 
4 
3 
2 
1 
0

使用另一个已初始化的 vector -

在这里,我们必须将已初始化 vector 的 begin() 和 end() 迭代器传递给 vector 类构造函数。然后我们初始化一个新的 vector 并用旧的 vector 填充它。

算法 -

代码 -

输出

1 
2 
3 
4 
5 
6 
7 
8

下一主题C++ 双端队列