Сообщение 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>Для чего лишняя сущность?
Это адаптер.
Он определяет интерфейс. Скрывает детали.
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, оператора[], итераторов и прочего.
Потому что применение других методов контейнера может
сломать инвариант очереди.
TW>Непонятно. Что он даёт?
Дает интерфейс.
TW>Почему нельзя list вместо него использовать?
Можно использовать.
А можно не использовать.
А можно вектор. А можно дек.
Вместе с типом тащится его специфика.
Вместе с типом контейнера тащится:
— его специфика управления памятью (его аллокатор);
— специфика доступа к элементам (интерфейс, категории итераторы, complexity);
— всякое другое вроде специфики инвалидации итераторов, thread safety, и т.д.
TW>Для чего лишняя сущность?
Это адаптер.
Он определяет интерфейс. Скрывает детали.
Грубо говоря если это очередь, то у тебя должны быть push и pop,
но не должны быть push_front/back, pop_front/back и не должно
быть всяких там at, оператора[], итераторов и прочего.
Потому что применение других методов контейнера может
сломать инвариант очереди.