Рефераты | Рефераты по информатике, программированию | Эффективное использование STL и шаблонов
Эффективное использование STL и шаблонов
Категория реферата: Рефераты по информатике, программированию
Теги реферата: рефераты по политологии, шпаргалки по математике юридические рефераты
Добавил(а) на сайт: Jezrin.
Со стартовым состоянием все просто: это всего лишь
объект класса, представляющего состояние. Со списком состояний и тем более со
списком переходов дело сложнее. Перечислить состояния через запятую не удастся.
Более того, для SFiniteStateMachine было бы удобно иметь фиксированное
количество аргументов. Оказывается, это возможно. Ведь мы можем создать
временные объекты, каждый из которых будет заниматься своим списком.
SFiniteStateMachine(
const
SState & StartState,
SStatesListProxy( <список состояний> ),
STransitionsProxy( <список переходов для события
1> ),
STransitionsProxy(
<список переходов для события 2> ),
. . .
);
Рассмотрим список состояний. Здесь остается та же
проблема – неопределенное количество состояний. Помочь в ее решении может
перегрузка операторов и конструктор по умолчанию. Перечислить аргументы через
запятую все равно не удалось бы, но вместо запятой подошел бы и другой
разделитель. Таким разделителем может быть <<, то есть обработку списка
состояний можно записать так:
Перегруженный operator<< для SStatesListProxy
проверит, что среди состояний нет повторяющихся, а кроме того обеспечит
типобезопасность для состояний. Переменное количество состояний при такой
записи тоже не проблема. Конструктор для SFiniteStateMachine теперь можно
записать так:
STransitionsProxy( <список переходов для события
1> )
STransitionsProxy( <список
переходов для события 2> ),
. . .
);
Аналогичным образом поступим со списком переходов для
одного события. Отличие будет лишь в том, что каждый список переходов имеет еще
один атрибут – событие, для которого описываются переходы. Конструктор
STransitionsProxy будет принимать один аргумент: событие, а перегруженный
operator<< будет принимать состояния.
Вернемся к конструктору автомата. У него тоже есть
список переменной длины – строки таблицы описания переходов или
STransitionsProxy. Решим эту задачу уже известным способом: создание временного
объекта и перегрузка operator<< для SStatesListProxy и STransitionsProxy.
Рекомендуем скачать другие рефераты по теме: налоги и налогообложение, конспект по русскому.