我正在制作国际象棋引擎,但在优化方面遇到了瓶颈。使用分析器后,我发现移动生成是最大的因素。当我仔细观察时,发现大部分时间都花在了我找到一个移动时调用 std::vector.push_back(move) 上。
有没有一种方法可以快速获得动态大小的 C++ 容器?它不能是一个固定大小的数组,因为我无法提前知道将生成多少个移动(尽管通常少于 50 个)。
有没有人遇到过这类问题?如有必要,我会编写自己的容器,但我觉得应该有一种标准的方法来执行此操作。
最佳答案
在以下 push_back()
调用之前调用具有足够大小的 std::vector::reserve()
以避免一次又一次地重新分配内存。
关于c++ - 快速可变大小容器 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21084557/