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

C++

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

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

03.12.2015, 18:11. Просмотров 255. Ответов 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);
Пытаюсь найти лучший способ организации подобного "набора" функций. Про массив указателей на функции думал, но не знаю, является ли этот вариант оптимальным.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2015, 18:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вектор функций? (C++):

Перегрузка функций, шаблоны функций Функция определения объемов: шара по его радиусу - C++ Builder
Перегрузка функций, шаблоны функций Функция определения объемов: шара по его радиусу (V=4/3пиR2), конуса по радиусу основания и высоте...

ошибка вектор - C++ Builder
Уважаемы коллеги. помогите пожалуйста Объявляю вектор class TForm1 : public TForm { ... private: ...

Задание на вектор - C++ Builder
Помогите определить значение и порядковые номера двух крупнейших элементов введенного вектора, пожалуйста

Вектор струтур - C++ Builder
struct NodeProp{ int IndexNode ;int idChild; int idTypeC;}; std::vector&lt;NodeProp&gt; vecLog2Error; ...

Вектор-столбец - C++ Builder
Как ввести вектор-столбец? Нужно описывать его как массив ?

Вектор data() - C++ Builder
Либо я оооочень сильно туплю, либо я что-т не понимаю. В билдере делаю такую весчь: #include &lt;vector&gt; //............ ...

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

На скрине для short getErrCount();
0
Миниатюры
Вектор функций?  
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
03.12.2015, 18:57 #5
Цитата Сообщение от Minchanin-Bel Посмотреть сообщение
для short getErrCount();
если это не статическая функция-член, то так не прокатит.
0
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);
};
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2015, 19:34
Привет! Вот еще темы с ответами:

из txt в вектор - C++ Builder
Добрый день! Помогите получить данные из .txt Записываются туда они так: ofstream file(&quot;D:\\1.txt&quot;,ofstream::out|ofstream::app); ...

Вектор в текстовик - C++ Builder
Есть вектор, который принимает структуру Expstruct strExp { unsigned int nCount; char Level; char Bellato_EXP; char Cora_EXP;...

Ругается на вектор - C++ Builder
Оформляю программу консоли в форму, ругается на вектор, как быть? void __fastcall TForm1::Button8Click(TObject *Sender) { if...

Вектор типа BYTE - C++ Builder
Собственно дописал программу. Она открывает бинарный файл, и предоставляет данные для редактирования. Собственно файл записываем в массив...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.12.2015, 19:34
Ответ Создать тему
Опции темы

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