Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Что такое фреймворк? http://www.cyberforum.ru/cpp/thread1780854.html
Доброго времени суток. Объясните пожалуйста на счет фреймворков. Несколько минут погуглив я примерно понял что это такое, но все же остались сомнения. В универе нам сказали писать программы в QT. При...
C++ Скорость или размер. Динамика Есть ряд вопросов.. 1) Что быстрее считает процессор (соответственно с разрядностью). К примеру динамически создаётся массив. Из этого массива надо вычислить к примеру c=a+b. Если c = m и a = m, то... http://www.cyberforum.ru/cpp/thread1780378.html
C++ Существует ли какие-нибудь мета редакторы(авто дописывание кода)?
Всем доброго времени суток! Я решил оптимизировать свою работу и придумал следующую идею на основе авто кода в C++ XE3. Если в среде написать switch и следать пробел, то программа сама допишет то,...
Таблица символов для компилятора C++
Делаю простой компилятор и что-то зависла на вопросе о том, как хорошо реализовать таблицу символов. Реализовать в виде класса, где в качестве поля используется, скажем, вектор, в который добавляются...
C++ Хэш код для нормализованного вектора http://www.cyberforum.ru/cpp/thread1778420.html
Мне нужно генерировать 64-разрядный хэш для трехмерных нормализованных векторов (double). Хэши должны быть равны если сгенерированы из одного или равных (поэлементно) векторов. У кого какие мысли?...
C++ Немного про std::string Привет, читал про std::string на разных сайтах. 1. Там говорят, С++ 11 гарантирует, что std::string будет stored contiguously in memory. В этом я не сомневаюсь, но каким еще образом можно в... подробнее
DrOffset
8934 / 4814 / 1177
Регистрация: 30.01.2014
Сообщений: 7,856
15.07.2016, 00:32 0

Какой паттерн подойдет, чтобы избежать длинных ветвлений?

15.07.2016, 00:32. Просмотров 423. Ответов 13
Метки (Все метки)

Ответ

Ну или (если уж от интового ключа никак не избавиться) как-то так:
В принципе и без std::function можно обойтись.
Кликните здесь для просмотра всего текста
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
class CTest
    : public CTest_base
{
public:
    CTest() : a() {}
    ~CTest() noexcept {}
    //something else
    void set()
    {
        a(vec);
    }
    void set_a(int key)
    {
        static void ( * op[])(std::vector<int> &) =
        {
             [](std::vector<int> & vec) {  vec.emplace_back(0); }
           , [](std::vector<int> & vec) {  vec.resize(5); }
           , [](std::vector<int> & vec) {  vec.clear(); }
           , [](std::vector<int> & vec) {  vec.shrink_to_fit(); }
        };
        a = op[key];
    }
 
private:
    void(* a)(std::vector<int> &);
};


Добавлено через 7 минут
Цитата Сообщение от tapochka Посмотреть сообщение
жаль только еще более элегантных решений нету
Да есть. Просто задача непонятная, допуски на задачу непонятные.
Универсального решения - да, нету. Но это всем известно.

Насчет:
Цитата Сообщение от tapochka Посмотреть сообщение
вот думал что-то типа tag-dispatching.
Посмотри-ка boost::variant и его static_visitor.
И вот сюда глянь: https://stackoverflow.com/questions/...late-functions

Вернуться к обсуждению:
Какой паттерн подойдет, чтобы избежать длинных ветвлений?
1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2016, 00:32
Готовые ответы и решения:

Какой компонент типа статус бара, подойдет для отображения дробного значения процента?
Подскажите, какой компонент типа статус бара, подойдет для отображения дробного...

Какой тип лучше всего подойдет для числа?
Есть число 2455903.795232, какой для него лучше всего тип переменной...

Обеспечить пропуск расчетов, чтобы избежать деления на ноль
Здравствуйте есть прога, которая вычисляет y=sin(x)/cos(x) в диапазоне...

Какой язык программирования лучше всего подойдет начинающему для взаимодействия с веб-сайтами?
Приветствую, форумчане! Какой язык программирования лучше всего подойдет...

Какой тип данных лучше подойдет для приложения, которое делит числа int или float?
Ответ написал int Хотя нутром чую, что float

13
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru