Skip to content

part_02_pair

grossho edited this page Sep 23, 2011 · 8 revisions

Тип для хранения и работы с парными элементами

Объект «pair».

Объект является неизменяемым элементом, рассчитанным для хранения всего двух значений. К вложенным элементам можно обращаться либо как в последовательности, либо как через атрибуты «k» и «v». Объект является заменителем двуместных кортежей в ряде случаев. Основное преимущество, что проверив тип не надо проверять длину кортежа — он всегда равен двум.

Порождаемый итератор не хранит указателя на родительский элемент, чем координально отличается от всех остальных стуктур.

Потребление памяти.

Сравнивая размер структур «tuple» и «pair» видно, что последняя не всегда легче своего прототипа. Для 32-ух битной архитектуры разница не заметна (из-за 8-ми байтового выравнивания). Однако для 64-ех битных архитектур экономия уже значительна и может достигать 20%.

Скорость работы.

Скорость работы не отличается из-за оптимизаций работы объектов стандартного типа. Выигрыш бывает заметным лишь при превышении использования какого-то лимита памяти.

Поскольку стандартный tuple выполняет кеширование выделения коротких последовательностей, чтобы оптимизировать большинство операций, аргументами к которым служат именно двузначные кортежи, то возврат памяти tuple осуществляется более неохотно.

Приемственность и завершенность.

Тип «pair» не может быть унаследован от «tuple», поскольку у них не совпадают начала структур. Работа с данным типом требует построения вокруг имеющегося кода сопровождающих операций, и в целом — более прост по сравнению с «tuple». Код готов к применению.

XXX: TODO

Для более тесной интеграции компонент возможно стоило бы сделать возврат функции «minmax_at» и «minmax_it» в контейнере именно «pair» типа (на данный момент возвращается кортеж из двух элементов).

Clone this wiki locally