【发布时间】:2021-12-10 08:22:24
【问题描述】:
我从this link看到了以下内容:
向量是 STL 的一部分。 C++ 中的向量是序列容器,表示可以在运行时改变其大小的数组。它们为元素使用连续的存储位置,就像在数组中一样有效,这意味着它们的元素也可以使用指向其元素的常规指针上的偏移量来访问。
向量是用于存储数据的动态数组。它不同于存储顺序数据并且本质上是静态的数组,向量为程序提供了更大的灵活性。向量可以在插入或删除元素时自动调整其大小。
如果向量可以做这么多,在什么情况下我们仍然更喜欢数组?
谢谢!
【问题讨论】:
-
如果数组的大小在编译时已知且不是很大的数字,则无需动态分配内存
-
数组的创建和销毁速度略快,内存开销也略少(零)。
-
容器的大小在编译时是否已知?它会在程序的整个生命周期中保持相同的大小吗?根据用例,可以将容器数据分配为局部变量(即在堆栈上)吗?然后去找一个数组。
-
@Erin -- 你知道
std::array存在吗?此外,您拥有的链接有:#include <bits/stdc++.h>-- 不要从该站点学习 C++。 -
@Erin:是的,有点。
vector需要new和delete内存来存储对象,这需要一定的时间,并且它还有内部数据成员来跟踪大小,容量,指向数据的指针等(@ 987654322@) 占用的内存超出了存储对象所需的内存。原始数组和std::array没有这些。
标签: c++ arrays vector data-structures