2014-09-26 67 views
1

我习惯于支持foreach循环的其他语言或基于范围的C++ 11中的语言。我试图在C++ 98中模拟它。主要是因为我不喜欢在每次需要该对象时使用(*it)表示法。实现基于范围的旧版C++

说我有这个C++代码11:

std::vector<int> myVec{...}; 
for(auto& outerLoopVar : myVec) 
{ 
    for(auto& innerLoopVar : myVec) 
    { 
     // do logic 
    } 
} 

有没有更好的方式来复制,在C++ 98比做这样的事情?

std::vector<int> myVec; 
// populate vector 
for(std::vector<int>::iterator it1 = myVec.begin(); it1 < myVec.end(); it1++) 
{ 
    int& outerLoopVar = *it1; 
    for(std::vector<int>::iterator it2 = myVec.begin(); it2 < myVec.end(); it2++) 
    { 
     int& innerLoopVar = *it2; 
     // do logic 
    } 
} 
+4

如何[升压的foreach(http://www.boost.org/doc/libs/1_56_0/doc/html/foreach.html)? – 2014-09-26 15:44:26

回答

1

不是真的,我的意思是迭代器符号是相当标准的,适用于多个容器和对象。它是一个应该使用的有价值的工具。我真的不知道你为什么不喜欢使用符号,但是如果你拥抱它,我认为它会更好。

2

你想用boost foreach

#include <boost/foreach.hpp> 

BOOST_FOREACH(int& elem, myVec) { 
    // do logic 
}