Meanwhile, a gentleman helped me by providing this code. Posting it here for any comments
#include <boost/typeof/typeof.hpp>
#define FOREACH_2(def1, def2, r1, r2) \
for(std::pair<BOOST_TYPEOF((r1).begin()), \
BOOST_TYPEOF((r2).begin())> _it12_((r1).begin(),(r2).begin()),\
_e12_((r1).end(), (r2).end()); \
_it12_.first != _e12_.first && _it12_.second != _e12_.second; \
++_it12_.first, ++_it12_.second) \
if(int _cnt1_ = 1) \
for(def1 = *_it12_.first; _cnt1_; _cnt1_ = 0) \
if(int _cnt2_ = 1) \
for(def2 = *_it12_.second; _cnt2_; _cnt2_ = 0)
Thanks,
Gokul.
Sorry the construct is like thisI have change the || into &&.
std::vector<int>::iterator iter1;
std::vector<std::string>::iterator iter2;
for( iter1 = cont1->begin(), iter2 = cont2->begin();
iter1 != cont1->end() && iter2 != cont2->end(); ++iter1, ++iter2 )
{
int x = *iter1;
std::string y = *iter2;
.....
}
Thanks,
GokulOn Sun, Feb 21, 2010 at 8:20 PM, Gokulakannan Somasundaram <gokul007@gmail.com> wrote:
Hi,
Is it possible to use Boost Foreach to iterate over two containers simultaneously? I have done my preliminary search in the lists and i couldn't find a solution. I am asking for a solution to iteration like this
std::vector<int>::iterator iter1;
std::vector<std::string>::iterator iter2;
for( iter1 = cont1->begin(), iter2 = cont2->begin();
iter1 != cont1->end() || iter2 != cont2->end(); ++iter1, ++iter2 )
{
int x = *iter1;
std::string y = *iter2;
.....
}
If this is not present, please consider this as a feature request. The syntax below can also be considered
forboth( int x, std::string y, cont1, cont2 )
{
}
Thanks,
Gokul.