Как в цикле foreach в Qt пропустить первые два элемента?

Рейтинг: 0Ответов: 2Опубликовано: 11.11.2014
QList<T> list;

foreach( T item, list )
{ 
....
}

То есть чтобы итерация начиналась с третьего элемента list.

Ответы

▲ 1Принят

Может, по старинке?

int k=0;
foreach( T item, list )
{ 
   k++;
   if(k<2) continue;
   ....
}

Хотя уверен, что сейчас придут люди и начнут рассуждать, что это противоречит MISRA, и будут правы. Если уж понадобилось работать с куском списка, то foreach уже не совсем подходит. Тогда уж лучше либо делать простой for и начинать его с 2, либо использовать итераторы с while:

QListIterator<int> iter(List);
iter.next();
iter.next();
while(iter.hasNext())
{
    ...
    iter.next();
}
▲ 3

Нужно в вести дополнительную переменную счетчик:

int i = 0;

foreach (){
i++;
if (i < 2)
   continue;
..ваш код..
}

Извините, не уверен в правильности (работает ли forech с оператором continue). Код на коленке выдумал.