2013-06-23 1 views
2

У меня есть два контейнера, и мне нужно перебирать их обоих одновременно, в том же цикле. Я использую boost foreach.Можно ли перебирать несколько контейнеров с boost foreach?

Как так:

#define foreach_ BOOST_FOREACH 

    struct Vertex 
    { 
    int x; 
    int y; 
    } 

    std::deque<Vertex>::iterator target_it = targets.begin(); 

    // Put items in correct position 
    foreach_(Vertex v, coords) 
    { 
    v.y = (*target_it).y; 
    target_it++; 
    } 

Где Coords является станд :: Deque.

Могу ли я также положить targets в это foreach как-нибудь? Документ не предлагает.

ответ

2

Возможно, вы хотите использовать Boost Zip Iterator для параллельного перемещения по ним.

+0

может быть ... кажется, скорее уродливым, чем мой оригинальный код. – BeeBand

+1

@BeeBand: Если вы хотите пройти два контейнера параллельно с Boost foreach, я уверен, что это способ сделать это. Для чего это стоит: я согласен, хотя я давно решил не использовать Boost foreach для реального кода, отчасти из-за этой точной проблемы. –