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

C++

Войти
Регистрация
Восстановить пароль
 
Minchanin-Bel
5 / 5 / 1
Регистрация: 19.09.2010
Сообщений: 173
#1

Вектор функций? - C++

03.12.2015, 18:11. Просмотров 233. Ответов 5
Метки нет (Все метки)

Добрый вечер. На просторах интернета наткнулся на следующее:

C++
1
std::vector<std::function<...>>
(Массив функций)

а внутри лямбда-функции. Вопрос такой: можно ли подобное провернуть не с лямбда-функциями, а с:

C++
1
2
3
4
5
void a(int);
void b(int);
void c(int);
void d(int);
void e(int);
Пытаюсь найти лучший способ организации подобного "набора" функций. Про массив указателей на функции думал, но не знаю, является ли этот вариант оптимальным.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2015, 18:11     Вектор функций?
Посмотрите здесь:

C++ Вектор
C++ Вектор!
C++ Вектор
контейнер -вектор вложеный в вектор C++
Матрицы. Получить вектор X, равный P-й строке матрицы, и вектор Y, равный Q-му столбцу матрицы C++
вектор C++
вектор функций C++
вектор C++
C++ Вектор
C++ Умножение матрицы на вектор с использованием функций
C++ Вектор ссылок и вектор указателей
C++ Builder Перегрузка функций, шаблоны функций Функция определения объемов: шара по его радиусу

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4384 / 3227 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
03.12.2015, 18:31     Вектор функций? #2
Цитата Сообщение от Minchanin-Bel Посмотреть сообщение
Вопрос такой: можно ли подобное провернуть
В последнем сообщении по упомянутой ссылке как раз есть пример с обычными функциями.
То бишь, можно.
Minchanin-Bel
5 / 5 / 1
Регистрация: 19.09.2010
Сообщений: 173
03.12.2015, 18:38  [ТС]     Вектор функций? #3
Цитата Сообщение от Tulosba Посмотреть сообщение
То бишь, можно.
Лямбда-функции заметил, а это нет... Извиняюсь... Спасибо!
Minchanin-Bel
5 / 5 / 1
Регистрация: 19.09.2010
Сообщений: 173
03.12.2015, 18:42  [ТС]     Вектор функций? #4
Только не выходит так провернуть, почему-то... В отдельном проекте без классов и неймспейсов все на ура проходит...

На скрине для short getErrCount();
Миниатюры
Вектор функций?  
Tulosba
:)
Эксперт С++
4384 / 3227 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
03.12.2015, 18:57     Вектор функций? #5
Цитата Сообщение от Minchanin-Bel Посмотреть сообщение
для short getErrCount();
если это не статическая функция-член, то так не прокатит.
Minchanin-Bel
5 / 5 / 1
Регистрация: 19.09.2010
Сообщений: 173
03.12.2015, 19:34  [ТС]     Вектор функций? #6
Зато вот так прокатило

Насколько верна подобная реализация? Лямбда функции и все такое, а затем в цикле вызов элементов.

Прототипы:

C++
1
2
3
4
5
void            checkFuncCalls(LA::LexAnalyzer& la);
void            checkExpressions(LA::LexAnalyzer& la);
void            checkConditions(LA::LexAnalyzer& la);
void            checkAssignments(LA::LexAnalyzer& la);
void            checkReturnValues(LA::LexAnalyzer& la);
Вектор:

C++
1
2
3
4
5
6
7
std::vector<std::function<void(LA::LexAnalyzer&)>> semantic = {
            [&](LA::LexAnalyzer& la) { checkFuncCalls(la); },
            [&](LA::LexAnalyzer& la) { checkExpressions(la); },
            [&](LA::LexAnalyzer& la) { checkConditions(la); },
            [&](LA::LexAnalyzer& la) { checkAssignments(la); },
            [&](LA::LexAnalyzer& la) { checkReturnValues(la); }
        };
Добавлено через 19 минут
А можно это как-нибудь через for_each (foreach) оформить?

C++
1
2
3
4
5
6
7
8
9
10
11
12
std::vector<std::function<void(LA::LexAnalyzer&)>> semantic = {
    [&](LA::LexAnalyzer& la) { checkFuncCalls(la); },
    [&](LA::LexAnalyzer& la) { checkExpressions(la); },
    [&](LA::LexAnalyzer& la) { checkConditions(la); },
    [&](LA::LexAnalyzer& la) { checkAssignments(la); },
    [&](LA::LexAnalyzer& la) { checkReturnValues(la); }
};
std::vector<std::function<void(LA::LexAnalyzer&)>>::iterator it = semantic.begin();
 
for (auto n : semantic){
    n(la);
};
Yandex
Объявления
03.12.2015, 19:34     Вектор функций?
Ответ Создать тему
Опции темы

Текущее время: 03:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru