gpt4 book ai didi

c++ - 在调用 vector::assign() 之前调用 vector::reserve() 会更好吗?

转载 作者:可可西里 更新时间:2023-11-01 17:37:14 26 4
gpt4 key购买 nike

我知道使用“reserve”以避免不必要的重新分配是一种很好的做法(Effective STL 的第 14 项):

std::vector<int> v1;
v1.reserve(1000);

for (int i = 0; i < 1000; i++)
v1.push_back(i);

当您调用 assign 时是否适用相同的规则?

std::vector<int> v2;
//v2.reserve(v1.size()); // Better to do this?
v2.assign(v1.begin(), v1.end());

最佳答案

如果 v1std::vector 你真的不需要它,因为编译器/STL 知道在 v2(并且将在复制实际数据之前保留本身所需的数量)。

然而,对于一般情况,如果输入容器 (v1) 不知道有多少项目,则提前保留 所需的数量可能是有意义的在那里,你手边有电话号码。

关于c++ - 在调用 vector::assign() 之前调用 vector::reserve() 会更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11282923/

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