eth*_*ane 0 c++ arrays performance loops
在C++中,迭代array
或vector
使用array.at(i)
函数中的元素或使用array[i]
?是否更好(性能方面)?一个比另一个更有效吗?
该at()
方法对传递的索引执行边界检查,operator[]
但不执行.
因此,at()
如果您有大量的元素访问,从性能角度来看,使用可能会更慢.
(我记得我做了一些测试大矩阵在旧版本的MSVC的,并有访问每个项目有和没有边界检查.像往常一样,有疑问时,测量之间的差异.)
另请注意,在某些实现中,如MSVC的实现,operator[]
在调试版本中执行边界检查.
对于std::vector::at
或std::array::at
,
返回对指定位置pos处元素的引用,并检查边界.
对于std::vector::operator[]
或std::array::operator[]
,
返回对指定位置pos处的元素的引用.不执行边界检查.
所以从理论上讲,operator[]
会更有效率.在实际情况中,您可以衡量.