1

我正在查看一个包含 std::vector 并存储向量大小的 C++ 类。每次修改向量时,该类都会更新此大小,从而导致大量冗余代码(因为始终可以从 size() 方法获得最新的大小)。这真的更快还是编译器会优化 size() 的迭代使用?

4

4 回答 4

11

首先,与之前的帖子中所说的不同std::vector,我看到的实现(MS 和 g++) 缓存大小。另一方面,它可以通过简单的指针减法来计算,并且您为缓存大小所做的任何事情几乎肯定会增加更多的开销而不是节省的开销。

于 2013-01-28T16:34:26.303 回答
6

std::vector::size具有恒定的时间复杂度,所以是的,它已经存储在向量中并且代码是多余的。

于 2013-01-28T16:20:59.790 回答
1

在我见过的所有实现中,缓存会更慢。这只是浪费内存带宽。

于 2013-01-28T16:21:10.887 回答
0

据我所知,标准库的实现vector::size只是返回一个缓存大小,而不是每次都重新计算。

于 2013-01-28T16:21:09.507 回答