Tho*_*mas 1 c++ optimization caching hoisting
我正在寻找一个包含std :: vector的C++类,并存储向量的大小.每次修改向量时,类都会更新此大小,从而导致大量冗余代码(因为size()方法始终可以获得最新大小).这真的更快还是编译器优化了size()的迭代使用?
Jam*_*nze 10
首先,与之前发布的内容不同std::vector,我见过的实现(MS和g ++)
不会缓存大小.另一方面,它可以通过一个简单的指针减法来计算,而你用来缓存大小的任何东西几乎肯定会增加比保存更多的开销.
std::vector::size 具有恒定的时间复杂度,所以是的,它已经存储在向量中并且代码是冗余的.