Re[4]: С++11: цикл for с двумя инкрементами
От: emergen  
Дата: 12.02.15 08:38
Оценка:
Здравствуйте, Igore, Вы писали:

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


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

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

I>Точно так же:

I>
I>struct Test
I>{
I>     int i;
I>};

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

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

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



я так понял что std::tuple плох тем что нельзя явно (статически) задать значения и размер массива
т.е. нельзя написать std::tuple<int, MyObject(), 3 > = { (1, .. ), (3, .. ), (3, .. )}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.