Макрос для цикла итератора для Iterables STL

Concept

Итак, я пытаюсь определить макрос для упрощения следующего кода:

for (vector<TYPE>::iterator iter = iterable.begin(); 
             iter != iterable.end(); iter++)

и

for (map<TYPE, TYPE>::iterator iter = iterable.begin();
             iter != iterable.end(); iter++)

и т. Д.

Существующие работы

На данный момент у меня есть

#define every(iter, iterable) ::iterator iter = iterable.begin(); iter != iterable.end(); iter++
for (vector<TYPE> every(iter, iterable))

, но я хотел бы еще больше упростить это.

Цель

В идеале, я бы хотел иметь возможность выполнить

for (every(iter, iterable))

, что означает, что мне нужно каким-то образом получить class итеративного объекта. Возможно ли это? Если да, как я могу это сделать?

Условия

  • Это, в идеале, должно входить в (относительно) большую кодовую базу, уже настроенную для доступа к объекту итератора .
  • Я работаю на компиляторе до C ++ 11

Победа

#define every(iter, iterable) typeof(iterable.begin()) iter = iterable.begin(); iter != iterable.end(); iter++
for (every(iter, iterable))
7
задан Patrick Perini 9 December 2011 в 03:13
поделиться