我正在寻找一个包含std :: vector的C ++类,并存储向量的大小。每次修改向量时,类都会更新此大小,从而导致大量冗余代码(因为size()方法始终可以获得最新大小)。这真的更快还是编译器会优化size()的迭代使用?
答案 0 :(得分:10)
首先,不同于之前发布的内容,
我见过std::vector
的实现(MS和g ++)
不缓存大小。另一方面,它可以计算
通过简单的指针减法,以及你要做的任何缓存
这个大小几乎可以肯定会增加更多的开销。
答案 1 :(得分:6)
std::vector::size
具有恒定的时间复杂度,所以是的,它已经存储在向量中并且代码是冗余的。
答案 2 :(得分:1)
在我看到的所有实现中,缓存将更慢。这只是浪费内存带宽。
答案 3 :(得分:0)
据我所知,vector::size
的标准库实现只返回一个缓存大小,而不是每次重新计算它。