Nai*_*ler 5 c++ loops memory-management vector memory-optimization
我有一个关于std :: vector的问题.
我有一个非常内存密集的算法,我预测到预测矢量大小并提前为矢量保留足够的内存将帮助我减少内存使用量.
以下哪项更好:
for ( ... ) {
std::vector<Type> my_vector;
my_vector.reserve(stuff_count);
// Do stuff , and append stuff to my_vector.
}
Run Code Online (Sandbox Code Playgroud)
或这个:
std::vector my_vector;
for ( ... ) {
my_vector.clear();
my_vector.reserve(stuff_count);
// Do stuff , and append stuff to my_vector.
}
Run Code Online (Sandbox Code Playgroud)
请告诉我哪个是最好的,或者是否有更好的做事方式.
非常感谢你提前!
sha*_*oth 11
使用第一个变体,您可以在每次迭代时重新分配向量的缓冲区 - 这通常非常昂贵.使用第二个变体,您只需偶尔重新分配.第二种变体更好,因为速度是您的首要任务.
你不清楚问题的元素数量来自何处.也许你甚至可以快速计算所有迭代的最大元素数,将其设置为缓冲区大小并且没有重新分配.