c ++迭代器有更漂亮的语法吗?

bd1*_*bd1 6 c++ iterator design-patterns syntactic-sugar

在C++中使用迭代器是否有更漂亮/更简洁的方法?从我看过的教程中,我要么在任何地方都设置了typedef(这对于很多一次性for循环来说都很繁琐):

typedef std::vector<std:pair<int, int> >::iterator BlahIterator;
Run Code Online (Sandbox Code Playgroud)

或者有详细的寻找循环,如:

for (std::vector<std:pair<int, int> >::iterator it = ... ) ...
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

kal*_*lev 7

在C++ 11中,您可以使用基于范围的for循环与auto关键字结合使用:

for (auto& it : v) ...
Run Code Online (Sandbox Code Playgroud)


Dav*_*hme 4

通过boost,您可以使用FOR_EACH宏。

typedef pair<int, int> tElem;
BOOST_FOREACH( tElem e, aVector )
{
    cout << e.first << " " << e.second << '\n';
}
Run Code Online (Sandbox Code Playgroud)

  • 使用纯 C++11 甚至*更漂亮*:`for(const auto&amp; i : aVector) {}` (24认同)