Информация об изменениях

Сообщение Re[3]: С++11: цикл for с двумя инкрементами от 12.02.2015 8:20

Изменено 12.02.2015 8:21 Igore

Здравствуйте, emergen, Вы писали:

E>А если вместо второго аргумента поставить указатели на объект типа

E>как в таком случае будет выглядеть цикл?

Точно так же:
struct Test
{
     int i;
};

std::vector< std::tuple< int, Test* > > vec1;

for( auto& it : vec1 )
{
    std::get< 1 >( it )->i = std::get< 0 >( it );
    //Или так
    int index;
    Test* pointer;
    std::tie( index, pointer) = it;
    pointer->i = index;
}

//Если использовать pair то можно так
std::vector< std::pair< int, Test* > > vec2;
for( auto& it : vec2 )
{
    it.first = it.second->i;
}
Re[3]: С++11: цикл for с двумя инкрементами
Здравствуйте, emergen, Вы писали:

E>А если вместо второго аргумента поставить указатели на объект типа

E>как в таком случае будет выглядеть цикл?

Точно так же:
struct Test
{
     int i;
};

std::vector< std::tuple< int, Test* > > vec1;

for( auto& it : vec1 )
{
    std::get< 1 >( it )->i = std::get< 0 >( it );
    //Или так
    int index;
    Test* pointer;
    std::tie( index, pointer) = it;
    pointer->i = index;
}

//Если использовать pair то можно так
std::vector< std::pair< int, Test* > > vec2;
for( auto& it : vec2 )
{
    it.second->i = it.first;
}