Рефераты | Рефераты по информатике, программированию | Эффективное использование STL и шаблонов
Эффективное использование STL и шаблонов
Категория реферата: Рефераты по информатике, программированию
Теги реферата: рефераты по политологии, шпаргалки по математике юридические рефераты
Добавил(а) на сайт: Jezrin.
{ From.OnExit( Event, To
); To.OnEnter( From, Event ); }
};
Стратегию по умолчанию (не вызывать никакую функцию)
можно передать в качестве аргумента шаблона. Стратегия вызова функций, скорее
всего, будет меняться чаще, чем стратегия действий при неизвестном событии.
Поэтому ее имеет смысл поместить в списке аргументов перед стратегией реакции
на неизвестное событие:
template <class SState, class SEvent,
class SFunctor =
SEmptyFunctor<SState,SEvent>,
class
SUnknownEventStrategy = SThrowStrategy<SEvent> >
class SFiniteStateMachine { . . . };
Еще один вопрос, связанный с событиями, состоит в том, что событие может быть сгенерировано внутри функции, вызываемой при выходе или
входе в состояние. Для обработки таких событий надо соответствующим образом
спроектировать функцию, принимающую событие. С учетом таких “внутренних”
событий, надо предусмотреть очередь, в которую будут помещаться события. Код, который обрабатывает переходы, должен будет делать это до тех пор, пока очередь
не опустеет. В качестве контейнера, подходящего для хранения событий, воспользуемся deque из STL. Поскольку нам нужны только вставка элементов в
начало и исключение из конца контейнера, без произвольного доступа, контейнер
deque подойдет лучше всего.
Осталось совсем немного. Иногда нужно привести автомат
в исходное состояние. Как и в случае с событиями предусмотрим два варианта:
обычная функция и перегруженный operator <<. Для перегруженного operator
<< нужно определить специальный манипулятор: