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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Artishok
ЧакЭ одобряЭ
 Аватар для Artishok
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
#1

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

29.09.2013, 23:32. Просмотров 346. Ответов 4
Метки нет (Все метки)

Как правильно добавлять функции в вектор и вызывать их?
Вот допустим есть вектор
C++
1
std::vector<void (*)(int, int)> vector;
Он должен хранить в себе указатели на функции. Вот некоторые функции
C++
1
2
3
4
5
6
7
8
9
10
11
void function1(int x, int y) {
    std::cout<<"Function 1: "<<x<<" - "<<y<<std::endl;
}
 
void function2(int x, int y) {
    std::cout<<"Function 2: "<<x<<" - "<<y<<std::endl;
}
 
void function3(int x, int y) {
    std::cout<<"Function 3: "<<x<<" - "<<y<<std::endl;
}
Но когда я пытаюсь их добавить в вектор
C++
1
2
3
vector.insert(function1);
vector.insert(function2);
vector.insert(function3);
компилятор ругается.

Как правильно их добавить туда?
И вызвать их получается можно так?
C++
1
vector.at(0)(1,3);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2013, 23:32     вектор функций
Посмотрите здесь:

C++ Создать иерархию классов вектор(longint) и безопасный вектор с проверкой выхода за пределы
Создать иерархию классов вектор и безопасный вектор с проверкой выхода за пределы C++
C++ Есть квадратная матрица А порядка n и вектор b с n элементами. Получить вектор Аb.
C++ задан вектор С, который состоит из 12 действительных чисел. Сформировать вектор D, нечетные элементы которого есть целая часть нечетных
Считать вектор из файла, записать вектор в файл C++
C++ Класс "вектор" с конструкторами, позволяющими создать нулевой вектор и вектор с произвольным числом элементов
C++ Умножение матрицы на вектор с использованием функций
C++ Вектор ссылок и вектор указателей
Вектор с неизвестным количеством чисел преобразовать в другой вектор, где числа будут стоять по возрастанию C++
Перегрузка функций "ввести в поток", "вывести с потока", "умножить вектор на число" C++
матрица на вектор, вроде правильно, а вектор на матрицу? посмотрите пожалуйста? C++
Почему матрица на вектор умножается быстрее чем вектор на матрицу? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fyret
184 / 170 / 13
Регистрация: 30.07.2013
Сообщений: 359
29.09.2013, 23:43     вектор функций #2
Цитата Сообщение от Artishok Посмотреть сообщение
компилятор ругается.
Так прочитайте, что компилятор пишет. Загляните в описание std::vector'а...
castaway
Эксперт С++
4869 / 3008 / 370
Регистрация: 10.11.2010
Сообщений: 11,059
Записей в блоге: 10
Завершенные тесты: 1
29.09.2013, 23:44     вектор функций #3
Цитата Сообщение от Artishok Посмотреть сообщение
компилятор ругается.
Может он ругается на неправильное использование метода insert !?
Paltus
3 / 3 / 0
Регистрация: 18.09.2013
Сообщений: 31
29.09.2013, 23:45     вектор функций #4
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
#include <iostream>
#include <vector>
using namespace std;
 
void function1(int x, int y) {
    std::cout<<"Function 1: "<<x<<" - "<<y<<std::endl;
}
 
void function2(int x, int y) {
    std::cout<<"Function 2: "<<x<<" - "<<y<<std::endl;
}
 
void function3(int x, int y) {
    std::cout<<"Function 3: "<<x<<" - "<<y<<std::endl;
}
 
int main()
{   
    
    
    
    vector<void (*)(int, int)> vect;
 
    vect.push_back(&function1);
    vect.push_back(&function2);
    vect.push_back(&function3);
 
    vect.front()(1, 2);
 
    system("pause");
 
 
    return 0;
 
}
Artishok
ЧакЭ одобряЭ
 Аватар для Artishok
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
29.09.2013, 23:49  [ТС]     вектор функций #5
Цитата Сообщение от castaway Посмотреть сообщение
Может он ругается на неправильное использование метода insert !?
да. я только что сообразил что нужно не insert а push_back использовать.
Yandex
Объявления
29.09.2013, 23:49     вектор функций
Ответ Создать тему
Опции темы

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