Информация об изменениях

Сообщение Re[3]: Как устроен queue? от 26.03.2023 19:37

Изменено 26.03.2023 19:48 3V

Re[3]: Как устроен queue?
Здравствуйте, TailWind, Вы писали:

TW>Непонятно. Что он даёт?

Дает интерфейс.

TW>Почему нельзя list вместо него использовать?

Можно использовать.
А можно не использовать.
А можно вектор. А можно дек.

Вместе с типом тащится его специфика.
Вместе с типом контейнера тащится:
— его специфика управления памятью (его аллокатор);
— специфика доступа к элементам (интерфейс, категории итераторы, complexity);
— всякое другое вроде специфики инвалидации итераторов, thread safety, и т.д.

TW>Для чего лишняя сущность?

Это адаптер.
Он определяет интерфейс. Скрывает детали.
Re[3]: Как устроен queue?
Здравствуйте, TailWind, Вы писали:

TW>Непонятно. Что он даёт?

Дает интерфейс.

TW>Почему нельзя list вместо него использовать?

Можно использовать.
А можно не использовать.
А можно вектор. А можно дек.

Вместе с типом тащится его специфика.
Вместе с типом контейнера тащится:
— его специфика управления памятью (его аллокатор);
— специфика доступа к элементам (интерфейс, категории итераторы, complexity);
— всякое другое вроде специфики инвалидации итераторов, thread safety, и т.д.

TW>Для чего лишняя сущность?

Это адаптер.
Он определяет интерфейс. Скрывает детали.

Грубо говоря если это очередь, то у тебя должны быть push и pop,
но не должны быть push_front/back, pop_front/back и не должно
быть всяких там at, оператора[], итераторов и прочего.
Потому что применение других методов контейнера может
сломать инвариант очереди.