2011-01-20 2 views

ответ

4

Они обеспечивают более узкий интерфейс, который обеспечивает дополнительные invariants и поэтому безопаснее использовать, когда вы хотите сохранить эти инварианты.

+0

Вы можете просто объяснить это более подробно простым способом? Благодарю. – Simplicity

+1

Рассмотрим функцию, * f *, в вашей программе, где у вас есть доступ к объекту * x *, с которым будет работать * f *. Когда вы пишете * f *, вам нужно будет сделать некоторые предположения о состоянии * x * (типы значений, которые могут содержать данные): это * предварительные условия * * f *. Если эти допущения ошибочны, программа будет плохо себя вести (у нее будет ошибка). * * Инварианты * * * * являются предположениями, что для вас очень безопасно говорить о состоянии * x * при написании * f *. – Raedwald

+0

См. Http://en.wikipedia.org/wiki/Programming_by_contract – Raedwald

0

Лучший ответ на ваш вопрос будет прочитать следующую книгу:

Effective STL

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

1
  1. они держат вас делать то, что вы решили стать незаконного торговать (например, если порядок обработки элементов имеет важное значение вы можете использовать стек для надлежащего порядка)
  2. они указывают на правильное использование (например, запретить пользователю получать доступ к данным, которых он не должен)
  3. они позволяют реализовать ту же структуру, используя различные базовые типы (например, в зависимости от вашей конкретной проблемы, вам может быть лучше реализовать стопку сверху deque или сверху vector)