C++ array.at(i)和array [i]表演

eth*_*ane 0 c++ arrays performance loops

在C++中,迭代arrayvector使用array.at(i)函数中的元素或使用array[i]?是否更好(性能方面)?一个比另一个更有效吗?

Mr.*_*C64 7

at()方法对传递的索引执行边界检查,operator[]但不执行.

因此,at()如果您有大量的元素访问,从性能角度来看,使用可能会更慢.

(我记得我做了一些测试大矩阵在旧版本的MSVC的,并有访问每个项目有和没有边界检查.像往常一样,有疑问时,测量之间的差异.)

另请注意,在某些实现中,如MSVC的实现,operator[]调试版本中执行边界检查.


son*_*yao 5

对于std::vector::atstd::array::at,

返回对指定位置pos处元素的引用,并检查边界.

对于std::vector::operator[]std::array::operator[],

返回对指定位置pos处的元素的引用.不执行边界检查.

所以从理论上讲,operator[]会更有效率.在实际情况中,您可以衡量.