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

Map с функциями: Как использовать функции в качестве объектов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не обработанное исключение "Integer division by zero" http://www.cyberforum.ru/cpp-beginners/thread1239573.html
Писал программу для подсчета кол-ва сочетаний. Программа запускается нормально, но как только ввожу результаты и нажимаю Enter, то всплывает окно: "Необработанное исключение в "0x00fd26a4" в...
C++ Переменная в качестве номера элемента массива. Array[Var] Мне нужно изменяя некую переменную Var обращатся к различным элементам массива Array. Компилятор не выдаёт ошибок, но код выполняется не так, как задумано, Например SomeVar = Array // в... http://www.cyberforum.ru/cpp-beginners/thread1239546.html
Помогите составить регулярку, принимающую несколько знаков C++
Короче нужно составить регулярку которая будет принимкть буквы числа и знаки - _ делал как обычно составлял на php {2,20} но тут такойвариант некатит, вообще ошибку викидывает. когда с одним...
Передача массива в функцию в качестве параметра C++
Всем привет! Файл с реализацией: int Init_can::Send(int* msgdata) { //Send canmsg_t tx; ULONG ulWritten; ZeroMemory(tx.data, 8);
C++ Вывести в новый файл список студентов, удалив из него студентов окончивших школу в текущем году. http://www.cyberforum.ru/cpp-beginners/thread1239489.html
На основе данных входного файла составить список студентов группы, включив следующие данные: ФИО, год рождения, домашний адрес, какую школу окончил. Вывести в новый файл список студентов, удалив из...
C++ Приписать значок € Вот код программы: #include <iostream> int main() { double a=0, b=0, c=0; std::cout << " Enter the width of the picture "; std::cin >> a; std::cout << " Enter the length of the... подробнее

Показать сообщение отдельно
pihta
1 / 1 / 0
Регистрация: 11.11.2012
Сообщений: 23
07.08.2014, 17:23  [ТС]
ForEveR, У меня теперь возник другой вопрос Я написал работающий код, и он работает, но не так как я от него это ожидаю. Дело в том, что при использовании функции из map( к примеру power ), используется не какая-то одна, а каждый раз создается новая. Можете вы или кто-нибудь другой объяснить почему так происходит и как с этим бороться, и вообще, возможно ли это исправить. Вот итоговый код:

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
#include <map>
#include <functional>
 
using std::cout;
using std::cin;
using std::endl;
using std::map;
using std::binary_function;
using std::function;
 
typedef map< char, function< double(double, double) > > mapOfFun;
 
void mapWithFunctionsTest();
 
int main()
{
    mapWithFunctionsTest();
    
    system("pause");
    return 0;
}
 
template< typename T >
struct modulus: public binary_function < T, T, T > 
{
    T operator()(const T& x, const T& y) const
    {
        return int( x ) % int( y );
    }
};
 
template< typename T >
struct power: public binary_function < T, T, T > 
{
    ~power()
    {
        cout << this << endl;
    }
 
    T operator()(const T& x, const T& y)
    {
        return pow( x, y );
    }
};
 
void mapWithFunctionsTest()
{
    mapOfFun m;
    double x = 2, y = 3;
 
    m.emplace( '+', std::plus<double>() );
    m.emplace( '-', std::minus<double>() );
    m.emplace( '*', std::multiplies<double>() );
    m.emplace( '/', std::divides<double>() );
    m.emplace( '%', modulus<double>() );
    m.emplace( '^', power<double>() );
 
    for( auto it : m) 
        cout << x << it.first << y << " = " << it.second(x, y) << endl;
    cout << endl;
 
    for( auto it : m) 
        cout << x << it.first << y << " = " << it.second(x, y) << endl;
    cout << endl;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru