如果我将一个向量传递给函数作为参考,我希望函数不应该修改向量,那么更好 - 使用const vector<>还是使用vector::const_iterator?
例如,我正在遍历从传递main()到的向量foo().
void foo (const vector<int> &v1) {
vector<int>::const_iterator m;
for(m=v1.begin();m1!=v1.end();++m1)
//loop body
}
Run Code Online (Sandbox Code Playgroud)
而且main()是
int main() {
vector<int> v11={0,1,2,3,4};
foo(v11);
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,v1应该const还是m应该const_iterator?
如果要阻止foo修改其参数,则应将参数视为const.您将无法const从const引用中获取非迭代器std::vector,因为无法访问非const限定版本std::vector::begin.
另外,我们有一种干净的方式来表达C++ 11中的范围迭代:range- forloops.
void foo(const vector<int> &v1)
{
for(const auto& x : v1) { /* use x */ }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |