Форум программистов, компьютерный форум CyberForum.ru

Какой вариант более оптимальный? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не работает код из страуструп - программирование принципы и практика http://www.cyberforum.ru/cpp-beginners/thread607172.html
Вот код его калькулятор почему то он не работает компилировал в VS 2010 #include <iostream> #include <locale.h> using namespace std; class Token { public: char kind; // вид Лексимы double value; // Переменая //Конструкторы
C++ Подсчитать число предлогом тексте Дан произвольный текст. Нужно подсчитать число предлогов в нем http://www.cyberforum.ru/cpp-beginners/thread607164.html
C++ Разработать программу, позволяющую вводить данные с клавиатуры и выводить их на экран с простейших форматированием
Разработать программу, позволяющую вводить данные с клавиатуры и выводить их на экран с простейших форматированием. Входные данные: 20 двух- и трехзначных чисел Представление выходных данных: два столбца, в одном двузначные числа, в другом трехзначные
this application has requested the runtime to terminate it in an unusual way C++
При создании больших циклов(более 1000) возникает данная ошибка this application has requested the runtime to terminate it in an unusual way, как только снижаю кол-во повтором на цикле пропадает, с чем может быть связана?
C++ Хэшированние данных http://www.cyberforum.ru/cpp-beginners/thread607114.html
Всем доброго времени суток , мнебы хотелось узнать как я на с++ мог бы захэшировать данные способ sha1 такого типа sha1($username.':'.$pass) погуглил но нечего путного не нашел .Зарание благодарю .
C++ C++0x lambda (функция qSort не ест компаратор) Здравствуйте, у меня проблема: функция qSort не ест компаратор, если он объявлен как лямбда. Как это исправить? вот код: template<typename T> void qSort(T* a, int from, int to, bool cmp(T,T)) { if (to - from < 1) return; auto mid = (to + from) / 2; auto e = a; подробнее

Показать сообщение отдельно
RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395

Какой вариант более оптимальный? - C++

16.06.2012, 16:48. Просмотров 392. Ответов 2
Метки (Все метки)

Доброго времени суток. Пишу лабу - распознаватель числовых констант. Возник вопрос, как оптимальнее, с точки зрения выполнения кода процессором, будет реализовать различные состояния автомата и переход между ними: с помощью перечисляемого типа и дальнейшей обработки с помощью switch/case
C++
1
2
3
4
5
6
7
8
typedef enum States {Normal, Slash, Constant, Backslash, Comment ...};
States State = Normal;
switch (State)
          {
                 case Normal:/*code*/
                 case Comment:/*code*/
                 ...
           }
Или же для каждого состояния разработать функцию, загнать их массив и переключать состояние автомата простым перемещением указателя на эти функции, например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
typedef void (*funPtr)(ifstream&, ofstream&); 
funPtr* t;
 
void Normal(ifstream& in, ofstream& out)
{
     //cout << "function Normal calling\n";
     char ch;
     in.get(ch);
     /*code*/
     out.put(ch);
     t = t + 1;//тут
}
void Comment(ifstream& in, ofstream& out)
{
     cout << "function Comment calling\n";
     char ch;
     in.get(ch);
     /*code*/
     out.put(ch);
     t = t + 1;
}
void SymbConst(ifstream& in, ofstream& out)
{
    char ch;
     in.get(ch);
     /*code*/
     out.put(ch);
     t = t - 2;
}
...
int main()
{
    funPtr xt[] = {Normal, Comment, SymbConst, NumConst, Blocker};
    t = xt;
/*code*/
}
это пока только набороски.
Какая из реализаций в конечном итоге потребует меньше "тиков" процессора, и будет эффективнее?
А может, есть еще какие то более оптимальные способы реализации автомата?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru