357
13.1-кестеде сипатталған бес категорияға, яғни санаттарға бөлінеді.
Кестеде
келтірілген операциялар тұрақты уақыт ішінде орындалады.
Айталық,
i
жəне
j
– бір түрдегі итераторлар,
x
– тізбек элементімен
бірдей типтегі элемент,
n
– бүтін шама болсын.
Онда келесі өрнектерді
жазуға болады:
i++ ++i i = j i == j i != j
13.1-кесте.
Итераторлардың категориялары
Итератор категориясы
Операциялар
Контейнерлер
кіріс
(
input
)
x = *i
барлығы
шығыс
(
output
)
*i = x
барлығы
тура
(
forward
)
x = *i, *i = x
барлығы
екібағытты
(
bidirectional
)
x = *i
,
*i = x,
--i, i--
барлығы
кездейсоқ қол
жеткізілетін
(
random access
)
x = *i, *i = x,
-- i , i--
i + n, i - n, i += n, i -= n
i < j, i > j, i <= j, i >= j
list
класынан
басқаларының
барлығы
Кестеден байқап отырғанымыздай,
тура итератор кіріс жəне
шығыс
итераторларының барлық операцияларын сүйемелдейді жəне олар кіріс неме-
се шығыс итераторлары қажет болған барлық жерлерде қолданылуы мүмкін.
Екібағытты итератор тура итератордың барлық операцияларын сүйемелдейді,
декрементті де қолдайды жəне тура итератор қолданылатын барлық жерлер-
де пайдаланылуы мүмкін.
Кездейсоқ қол жеткізілетін итератор екібағытты
итератордың барлық операцияларын сүйемелдейді,
сонымен қатар, тізбектің
кездейсоқ элементіне көшуді жəне операторларды салыстыру əрекеттерін де
орындайды.
Итераторлар иерархия құрады деп айтуға болады, оның жоғарғы деңгейінде
кездейсоқ қол жеткізу итераторлары орналасады.
Итератордың деңгейі
неғұрлым жоғары болған сайын, ол құрамында жұмыс істейтін контейнер-
ге соғұрлым жоғары функционалдық талаптар қойылады. Мысалы, тізімдер
үшін кездейсоқ қол жеткізу итераторларын
қолдануға болмайды, өйткені тізім
итератордың қажетті операциялар жиынтығын сүйемелдемейді.
Итерациялық кластар мен функциялар
Достарыңызбен бөлісу: