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

Шаблон указателя на функцию и шаблоны функций - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создать иерархию из трех классов для решения системы 2 уравнений с 2 неизвестными http://www.cyberforum.ru/cpp-beginners/thread1117037.html
Класс 1 a1,b1,c1,a2,b2,c2,-вещественные Общий метод VVOD Класс 2 Общие поля: det,detx,dety,x,y Общий метод Сalc() Класс 3
C++ Число элементов массива, не больше максимального, но и не меньше минимального Число элементов массива Х,которые не превосходят максимального элемента масива Y,и в тоже время не меньше его минимального элемента. http://www.cyberforum.ru/cpp-beginners/thread1117016.html
C++ Несколько потоков - нужен пример программы
приведите, пожалста, небольшой кодик программы , если не сложно, в которой, допустим, в одном потоке выводится что то каждые пол секунды, а в другом каждую секунду, или что то подобное...
C++ Move семантика (класс полиномов)
Доброго времени суток. Пишу простенький класс полиномов, в котором есть единственное приватное поле - это map. Вот думаю надо ли писать move конструктор и оператор присвоения или нет. А если надо, то как. Кто разобрался уже, подскажите. Заодно, если увидите еще какие-то ошибки в коде, то замечания тоже приветствуются. Зарание спасибо. polynomial.h#pragma once #include <map> #include...
C++ Изменить заданный числовой массив так, чтобы элементы были расположены в нем в обратном порядке http://www.cyberforum.ru/cpp-beginners/thread1116979.html
Доброго времени суток. Изменить заданный числовой массив так, чтобы элементы были расположены в нем в обратном порядке. Задача вроде бы элементарная, но че то никак не могу понять почему цикл не изменяет порядок #include <iostream> #include <iomanip> using namespace std;
C++ Вывести на экран все слова, количество букв в которых превышает введенное число Необходимо вывести на экран все слова, количество букв в которых превышает число, заданное пользователем с клавиатуры. (с клавиатуры задается произвольный текст, содержащий не более 10 строк, в каждой строке не более 80 символов.) подробнее

Показать сообщение отдельно
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,902
Записей в блоге: 2
Завершенные тесты: 1
12.03.2014, 12:42     Шаблон указателя на функцию и шаблоны функций
Чем не устраивает код из поста #4?
Цитата Сообщение от montkay Посмотреть сообщение
Здесь нельзя применить какой-нибудь метод, чтобы сделать указатель на функцию шаблонным?
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
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
 
template < typename T >
struct TFunc {
   typedef bool (*type)(T,T) ;
} ;
 
template <typename T>
bool Asc(T left, T right)       // функция, которая пригодится для сортировки по возростанию.
{ return left > right; }
template <typename T>
bool Desc(T left, T right)      // функция, которая пригодится для сортировки по убыванию.
{ return left < right; }
template <typename T>
void sort(T *pArr, int size, typename TFunc<T>::type pFunc)   // сама сортировка (пузырьковым методом).
{
    for (int i = 0; i < size; ++i)
        for (int j = 0; j < size - 1 - i; ++j)
            if (pFunc(pArr[j], pArr[j+1]))
            {
                T temp = pArr[j];
                pArr[j] = pArr[j+1];
                pArr[j+1] = temp;
            }
}
 
int main()
{
    srand(unsigned (time(0)));
    int n = 10;
    int *pArr = new int [n];        // создается массив.
    for (int i = 0; i < n; ++i)
        pArr[i] = rand()%11;
    for (int i = 0; i < n; ++i)     // отображение массива.
        cout << pArr[i] << " ";
    cout << endl;
    cout << "Enter 1 to ordinate array in ascent\n"
            "and 2 - in descent:\n";
    int c;
    while (cin >> c)                // выбор 1 для сортировки по возростанию и 2 - по убыванию.
    {
        if (c == 1 || c == 2)
            break;
        cout << "Enter correct number! Try again:\n";
    }
    if (c == 1)
        sort (pArr, n, Asc<int>);
    else
        sort (pArr, n, Desc<int>);
    for (int i = 0; i < n; ++i)     // отображение отсортированного массива.
        cout << pArr[i] << " ";
    cout << endl;
    return 0;
}
 
Текущее время: 11:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru