-
Notifications
You must be signed in to change notification settings - Fork 0
part_02_pair
Объект является неизменяемым элементом, рассчитанным для хранения всего двух значений. К вложенным элементам можно обращаться либо как в последовательности, либо как через атрибуты «k» и «v». Объект является заменителем двуместных кортежей в ряде случаев. Основное преимущество, что проверив тип не надо проверять длину кортежа — он всегда равен двум.
Порождаемый итератор не хранит указателя на родительский элемент, чем координально отличается от всех остальных стуктур.
Сравнивая размер структур «tuple» и «pair» видно, что последняя не всегда легче своего прототипа. Для 32-ух битной архитектуры разница не заметна (из-за 8-ми байтового выравнивания). Однако для 64-ех битных архитектур экономия уже значительна и может достигать 20%.
Скорость работы не отличается из-за оптимизаций работы объектов стандартного типа. Выигрыш бывает заметным лишь при превышении использования какого-то лимита памяти.
Поскольку стандартный tuple выполняет кеширование выделения коротких последовательностей, чтобы оптимизировать большинство операций, аргументами к которым служат именно двузначные кортежи, то возврат памяти tuple осуществляется более неохотно.
Тип «pair» не может быть унаследован от «tuple», поскольку у них не совпадают начала структур. Работа с данным типом требует построения вокруг имеющегося кода сопровождающих операций, и в целом — более прост по сравнению с «tuple». Код готов к применению.
Для более тесной интеграции компонент возможно стоило бы сделать возврат функции «minmax_at» и «minmax_it» в контейнере именно «pair» типа (на данный момент возвращается кортеж из двух элементов).