Итератор
Iterator
Тип поведенческий
Описан в Design Patterns Да

Iterator — поведенческий шаблон проектирования. Представляет собой объект, позволяющий получить последовательный доступ к элементам объекта-агрегата без использования описаний каждого из агрегированных объектов.

Например, такие элементы как дерево, связанный список, хеш-таблица и массив могут быть пролистаны (и модифицированы) с помощью объекта Итератор.

Перебор элементов выполняется объектом итератора, а не самой коллекцией. Это упрощает интерфейс и реализацию коллекции, а также способствует более логичному разделению обязанностей.

Особенностью полноценно реализованного итератора является то, что код, использующий итератор, может ничего не знать о типе итерируемого агрегата.

Конечно же, (в C++) почти в любом агрегате можно выполнять итерации указателем void*, но при этом:

  • не ясно, что является значением «конец агрегата», для двусвязного списка это &ListHead, для массива это &array[size], для односвязного списка это NULL
  • операция Next сильно зависит от типа агрегата.

Итераторы позволяют абстрагироваться от типа и признака окончания агрегата, используя полиморфный Next (часто реализованный как operator++ в C++) и полиморфный aggregate.end(), возвращающий значение «конец агрегата».

Таким образом, появляется возможность работы с диапазонами итераторов, при отсутствии знания о типе итерируемого агрегата. Например:

Iterator itBegin = aggregate.begin();
Iterator itEnd = aggregate.end();
func(itBegin, itEnd);

И далее:

void func(Iterator itBegin, Iterator itEnd)
{
 for( Iterator it = itBegin, it != itEnd; ++it )
 {
 }
}

Примеры

править

С#

править

PHP5

править

Пример итератора компоновщика на PHP5

править

Python

править

Rust

править

📚 Artikel Terkait di Wikipedia

Производственная функция

Харкурт, 2009. Franklin, 1969. J. Felipe & J.S.L. McCombie. The Aggregate Production Function: ‘Not Even Wrong’ // Review of Political Economy, 26:1, 60-84

Производственная функция домохозяйства

Wright, Randall D. Homework in Macroeconomics: Household Production and Aggregate Fluctuations (англ.) // Journal of Political Economy[англ.] : journal

Ту-160

International Institute For Strategic Studies IISS «New START Treaty Aggregate Numbers of Strategic Offensive Arms. July 1, 2016.» Архивная копия от

C++26

Архивировано 14 ноября 2023 года. Clarifying rules for brace elision in aggregate initialization . Дата обращения: 23 марта 2024. Архивировано 23 марта

Ядерная триада

телеканал «RT» // russian.rt.com (20 декабря 2015 года) New Start Treaty Aggregate Numbers of Strategic Offensive Arms. Архивная копия от 27 мая 2017 на

Шизофрения

Kuipers L. The predictive utility of expressed emotion in schizophrenia: an aggregate analysis (англ.) // Psychol Med : journal. — 1994. — August (vol. 24,

Харрис, Дональд (экономист)

Harris, Donald J. (1973). «Capital, Distribution, and the Aggregate Production Function». The American Economic Review. 63 (1): 100—113. JSTOR 1803129

C++17

is_nothrow_swappable, is_swappable_with, is_nothrow_swappable_with, is_aggregate (составной тип), has_unique_object_representations (тривиально копируемый