gpt4 book ai didi

c++ - 为 std::vector> 中的内部 vector 保留内存

转载 作者:可可西里 更新时间:2023-11-01 16:37:58 25 4
gpt4 key购买 nike

我喜欢为 std::vector<std::vector<TYPE>> 中的内部 vector 保留内存,为了避免在随后的 push_back 期间进行大量的单一内存分配。 .我不知道 innerSize vector 的精确度,但我可以给出一个很好的估计。

std::resize可以用作

vecs.resize(outerSize, std::vector<TYPE>(innerSize));

哪里outerSizeinnerSize给出整数。这对我不起作用,因为默认构造函数不适用。然而std::reserve不提供这样的接口(interface)。

这是为所有内部 vector 保留内存的好方法吗?

vecs.resize(outerSize);
for (auto &elem : vecs) {
elem.reserve(innerSize);
}

最佳答案

我能想到的唯一选择是围绕内部 std::vector 创建一个包装类;将其保留在 build 中。导致类似的事情

struct TableRow {
std::vector<TYPE> data;
TableRow() {
data.reserve(SIZE);
}
}

std::vector<TableRow> myVectorOfVectors;

这样做的另一个好处是您的内部 vector 获得了一个您可以理解的名称(例如 TableRow);但缺点是,除非你愿意玩继承 std::vector 的游戏(如果有疑问;不要这样做);您对包装器类的使用肯定会有点笨拙,因为您需要添加 .data 或类似的东西。

正如其他人所说;你的方式完全没问题。

关于c++ - 为 std::vector<std::vector<TYPE>> 中的内部 vector 保留内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50325267/

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