为了给函数提供修改向量的选项,我不能这样做
curr = myvec.at( i );
doThis( curr );
doThat( curr );
doStuffWith( curr );
Run Code Online (Sandbox Code Playgroud)
但我必须这样做:
doThis( myvec.at( i ) );
doThat( myvec.at( i ) );
doStuffWith( myvec.at( i ) );
Run Code Online (Sandbox Code Playgroud)
(正如我的另一个问题的答案所指出的那样)
myvec.at()
那时我打算打个电话.与使用变量存储结果的第一个示例相比,它有多快?
我有不同的选择吗?我可以以某种方式使用指针吗?
当它变得严重时,myvec.at()
每秒会有数千个呼叫.所以每个小表现都很重要.
Mic*_*fik 18
您可以使用参考:
int &curr = myvec.at(i);
// do stuff with curr
Run Code Online (Sandbox Code Playgroud)
该at
成员函数执行边界检查,以确保该参数是的规模内vector
.分析只是确切地知道它比它慢多少的方法operator[]
.在此处使用引用允许您执行一次查找,然后在其他位置使用结果.const
如果你想保护自己不会意外地改变价值,你可以把它作为参考.
归档时间: |
|
查看次数: |
6002 次 |
最近记录: |