什么时候声明迭代器更好?这是从cprogramming.com获取的一些示例代码,只是为了说明我所指的内容.
在for循环中?
for(vector<int>::iterator myIntVectorIterator = myIntVector.begin();
myIntVectorIterator != myIntVector.end();
myIntVectorIterator++)
{
cout<<*myIntVectorIterator<<" ";
}
Run Code Online (Sandbox Code Playgroud)
或者在for循环之外?
vector<int>::iterator myIntVectorIterator;
for(myIntVectorIterator = myIntVector.begin();
myIntVectorIterator != myIntVector.end();
myIntVectorIterator++)
{
cout<<*myIntVectorIterator<<" ";
}
Run Code Online (Sandbox Code Playgroud)
这两种风格之间几乎没有功能差异.选择使您的代码最具可读性的那个.
或者,C++ 2011包含一个基于范围的for循环,它比以下任一选项更具可读性:
for (int & element : myIntVector) {
cout << element << " ";
}
Run Code Online (Sandbox Code Playgroud)
典型的做法是将所有变量声明在它们将被使用的相同范围内.遵循这个原则,你应该在循环声明中声明你的迭代器变量.
正如评论者所指出的那样,在循环之外声明迭代器并没有错,但我可以想到为什么它不是一个好主意的几个原因.
当然,正如许多其他人所指出的那样,这两种方法之间没有实际的区别,并且您可能有使用相关或必要的用例,或者它可能只是风格问题.但是,如果你可以避免它,我建议不要在比循环更高的范围内声明循环迭代器.