我有一个浮点 vector 。当我处理某些数据时,我将其推回。在声明 vector 时我总是知道大小是多少。
对于最大的情况,它是 172,490,752 个 float 。 push_back 一切都需要大约 11 秒。
是否有更快的替代方案,例如不同的数据结构或其他?
最佳答案
如果你知道最终大小,那么 reserve()声明 vector 后的那个大小。这样它只需分配一次内存。
此外,您可以尝试使用 emplace_back()尽管我怀疑它会对 float
的 vector 产生任何影响。但是请尝试并对其进行基准测试(当然是使用优化的构建 - 您正在使用优化的构建 - 对吗?)。
关于c++ - push_back 的更快替代方案(大小已知),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44934038/