Итератори, Ръководство за STL, Статии, Програмиране - C програмиране, Delphi, C#
Итераторите са обобщение на указатели, които позволяват на програмиста да работи с различни структури от данни (контейнери) по еднакъв начин. За да създадем шаблонни алгоритми, които работят правилно и ефективно с различни типове структури от данни, трябва да формализираме не само интерфейсите, но и семантиката и допусканията за сложност на итераторите. Итераторите са обекти, които имат оператор*, който връща стойността на някакъв клас или вграден тип T, наречентип стойностна итератора. За всеки тип итератор X, за който е дефинирано равенство, има съответен целочислен тип със знак, наречендистанционен типна итератора.
Казва се, че итератор j едостижим(достъпен) от итератор i тогава и само ако има крайна последователност от приложения на operator++ върху i, което прави i==j. Ако i и j се отнасят за един и същи контейнер, тогава или j е достъпно от i, или i е достъпно от j, или и двете са достъпни (i == j).
Повечето шаблони на алгоритмични библиотеки, които работят със структури от данни, имат интерфейси, които използват диапазони. Диапазонът е двойка итератори, които показват началото и края на изчислението. Интервал [i,i) - празен диапазон; като цяло диапазонът [i,j) се отнася до елементите в структурата на данните от елемента, посочен от i до, но не включващ елемента, посочен от j. Диапазонът [i,j) е валиден тогава и само ако j е достъпен от i. Резултатът от прилагането на библиотечни алгоритми към невалидни диапазони е недефиниран.
В следващите раздели ние приемаме: a и b са X стойности, n е стойност от тип разстояние Distance, u, tmp и m са идентификатори, r и s са lстойности на X, t е стойносттатип стойност T .
Входни итератори
Клас или вграден тип X удовлетворява изискванията на входен итератор за тип стойност T, ако следните изрази са верни: