gpt4 book ai didi

c++ - 如何正确调整 vector 大小?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:04:03 25 4
gpt4 key购买 nike

来自 this answer :

One place where you can run into a performance issue, is not sizing the vector correctly to begin with.

那么,当 vector 是一个类的属性时,如何正确调整其大小呢?是否有(最佳)方法来设置 vector 的容量(在初始化时)?

最佳答案

是的。查看reserve方法。它将要求 vector 的容量至少足以包含作为其参数发送的元素数。如果您可以预期要存储在 vector 中的项目数的上限,那么您可以在 vector 中保留该数量的空间。

上面链接的例子-

// vector::reserve
#include <iostream>
#include <vector>

int main ()
{
std::vector<int>::size_type sz;

std::vector<int> foo;
sz = foo.capacity();
std::cout << "making foo grow:\n";
for (int i=0; i<100; ++i) {
foo.push_back(i);
if (sz!=foo.capacity()) {
sz = foo.capacity();
std::cout << "capacity changed: " << sz << '\n';
}
}

std::vector<int> bar;
sz = bar.capacity();
bar.reserve(100); // this is the only difference with foo above
std::cout << "making bar grow:\n";
for (int i=0; i<100; ++i) {
bar.push_back(i);

// This block will execute only once
if (sz!=bar.capacity()) {
sz = bar.capacity();
std::cout << "capacity changed: " << sz << '\n';
}
}

return 0;
}

你会看到,随着向foo vector 中添加更多的元素,它的容量不断增加,但在第二种情况下,因为它已经预留了100个元素的空间,所以容量只改变了一次.

Here是一个运行的例子。

关于c++ - 如何正确调整 vector 大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13723019/

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