Цикл на итераторах C ++, начиная со второго (или n-го) элемента

Я ищу удобный для чтения, элегантный способ сделать следующее на C ++, здесь показано на Python:

for datum in data[1:]:
    do work.

Итераторы для рассматриваемых данных могут не поддерживают итераторы с произвольным доступом, поэтому я не могу просто использовать:

for (mIter = data.begin() + 1; mIter != data.end(); mIter++)

Лучшее, что я придумал, это следующее:

iterable::iterator mIter = data.begin();
for (mIter++;  mIter != allMjds.end(); mjdIter++) {
    do work.
}

Это не слишком долго, но вряд ли объясняет - на первый взгляд это действительно похоже на ошибка!

Другое решение - иметь "n-й элемент" вспомогательная функция, я думаю. Есть какие-нибудь более крутые идеи?

12
задан user511493 18 November 2010 в 00:35
поделиться