gpt4 book ai didi

c++ - 在 C++ 中, vector 函数 push_back 会增加空数组的大小吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:52:51 26 4
gpt4 key购买 nike

快速提问。假设我声明了一个大小为 20 的 vector 。然后我想使用 push_back 向它添加一些整数。

vector<int> myVector(20);
myVector.push_back(5);
myVector.push_back(14);

我的vector的容量现在是22,还是还是20?索引 [19] 和 [20] 分别添加了 5 和 14 吗?还是它们在 [0] 和 [1]?

最佳答案

在这些语句之后,它的容量是实现定义的。 (请注意,这与其大小不同。)


vector<int> myVector(20);

这将创建一个由 20 个 0 填充的 vector 。它的大小是二十,准确地说,它的容量至少是二十。它是否恰好是二十是实现定义的;它可能有更多(实际上可能没有)。

myVector.push_back(5);

在此之后,数组的第 21 个元素为 5,容量再次由实现定义。 (如果容量之前恰好是二十,现在以未指定的方式增加。)

myVector.push_back(14);

同样,现在数组的第 20 位元素是 14,容量是实现定义的。


如果你想保留空间,但不插入元素,你会这样做:

vector<int> myVector;
myVector.reserve(20); // capacity is at least twenty, guaranteed not
// to reallocate until after twenty elements are pushed

myVector.push_back(5); // at index zero, capacity at least twenty.
myVector.push_back(14); // at index one, capacity at least twenty.

关于c++ - 在 C++ 中, vector 函数 push_back 会增加空数组的大小吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7774938/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com