Каковы преимущества и недостатки использования std :: stack вместо просто deque, vector или list

c++ stl stack containers

1591 просмотра

1 ответ

47 Репутация автора

Я пишу очень простой std :: stack, используя vector в качестве основного контейнера. Я понял, что могу заменить все функции push (), pop () и top () на push_back (), pop_back () и back () векторного контейнера.

Мои вопросы: зачем использовать адаптер контейнера, когда достаточно контролируемого использования основного контейнера? Почему бы не использовать только деку, вектор или список? Будет ли трата памяти или время обработки?

Автор: pbruno Источник Размещён: 29.01.2015 04:48

Ответы (1)


6 плюса

86613 Репутация автора

Решение

Когда ваш код говорит std::stack, что читателю понятно, какие операции ему нужны в контейнере ... он связывается и документирует, при этом следя за тем, чтобы другие операции не использовались. Это может помочь им быстро сформировать впечатление от алгоритмической логики в вашем коде. Тогда легко заменить другие реализации, которые соблюдают тот же интерфейс.

Это немного похоже на использование std::ifstreamвместо std::fstream- вы можете читать и писать std::fstream, но кто бы ни читал ваш код, он должен рассмотреть более возможные варианты использования потока, прежде чем понять, что он используется только для чтения; ты бы потратил их умственные усилия.

Автор: Tony Delroy Размещён: 29.01.2015 04:55
Вопросы из категории :
32x32