curr = myvec.at( i );
doThis( curr );
doThat( curr );
doStuffWith( curr );
但我必须要做的是:
doThis( myvec.at( i ) );
doThat( myvec.at( i ) );
doStuffWith( myvec.at( i ) );
(正如我的另一个问题的答案所指出的)
我打算大量调用
myvec.at()
,那它有多快,与使用变量存储结果的第一个示例相比如何?我有其他选择吗?我能以某种方式使用指针吗?
当情况严重时,每秒将有数千次调用myvec.at()
。因此,任何一点性能消耗都很重要。
at()
而不是[]
有什么好处。索引边界检查对于调试很有用,但是当你在调试模式下编译时,[]
也会执行此操作。如果代码已经正确,使用at()
而不是[]
是没有必要的,而且是多余的。写出正确的代码才是王道。 - Konrad Rudolph[]
。 - Brian Neal.at()
代替[]
可能在生产代码中非常值得。 - David Thornley