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

Специализация шаблона - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Перегрузка оператора + http://www.cyberforum.ru/cpp-beginners/thread1003279.html
String String::operator + (String & sg2) { String tmp; tmp.str = new char ; strcpy (tmp.str, str); strcat (tmp.str, sg2.str); return tmp; } Собственно вопрос: как вернуть tmp? Насколько я понимаю, деструктор срабатывает раньше...
C++ Извлечение из класса поля которое является множеством (set) Здравствуйте! У меня есть класс одно из полей которого множество (set<Something> SomethingSet). Я хочу передать это множество в функцию и для этого нужно создать гетер. Может кто подсказать как создать функцию возвращающую это множество из класса? http://www.cyberforum.ru/cpp-beginners/thread1003272.html
Изменить тип списка C++
Здравствуйте. Нужна помощь с изменением типа списка. Я сделал программу для обработки списка но как оказалось не того типа. Нужно переделать эту программу под индексный список. читал об этом в сети как то не очень понял. #include<iostream> #include<conio.h> #include<stdlib.h> #include<time.h> using namespace std; struct sp { int p1,p2; sp *pnt;
Исправте ошибки в программе C++
#include<math.h> #include<stdio.h> #include<Windows.h> int main(){ int x,y,z,n; for (int x=0;x<=1000;x++); for (int y=0;x<=1000;y++); for (int z=0;z<=1000;z++); printf("n?\n"); scanf("%d",&n);
C++ Создать объект класса Круг http://www.cyberforum.ru/cpp-beginners/thread1003244.html
Создать объект класса Круг, используя классы Точка, Окружность. Методы: создать, удалить, вывести на экран, изменение радиуса, определение принадлежности точки данному кругу, определение площади. Предусмотреть меню, позволяющее продемонстрировать заданные операции. Не могу сделать так что бы программа не удаляла введенные ранее кординаты и радиус, ( то есть когда я во 2ой раз начинаю вводить...
C++ Удаление 1 строки из другой Можно ли удалить 1 строку из другой с помощью операции '-' ? В функции oper() при попытке выдаются ошибки: error C2784: '_D __cdecl std::operator -(const class std::reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> &,const class std::reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> &)' : could not deduce template argument for 'const class error C2676: binary '-' : 'class std::basic_string<char,struct... подробнее

Показать сообщение отдельно
CHELOVEKPAUK
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
10.11.2013, 13:21     Специализация шаблона
Здравствуйте!

Задача:
Создайте шаблонную функцию maxn(), которая принимает в качестве аргумента массив элементов типа Т и целое число, представляющее собой количество элементов в массиве, и возвращает элемент с наибольшим значением. Проверьте ее в программе, которая использует шаблон данной функции с массивом из шести значений типа int и с массивом из четырех значений типа double. Программа также должна включать специализацию, которая использует в качестве аргумента массив указателей на char и количество указателей в качестве второго аргумента, а затем возвращает адрес самой длинной строки. Если имеется более одной строки наибольшей длины, функция возвращает адрес первой из них. Выполните проверку специализации на примере массива, состоящего из пяти указателей на строки.

Код:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <Windows.h>
#include <cstring>
using namespace std;
 
#define rus setlocale(0,"rus");SetConsoleCP(1251);SetConsoleOutputCP(1251);
 
template <class T> T maxn (T* arr, T n);
 
template <> char * maxn <char*> (char*, char*);
 
 
int main()
{
    rus;
    int arr_int[5] = {32, 46, 91, 190, 191};
    cout << maxn(arr_int, 5);
    system("pause");
}
 
template <class T>
T maxn (T* arr, T n)
{
    int temp = arr[0];
    for (int i = 1; i < n; i++)
        if (arr[i] > temp) temp = arr[i];
    return temp;
}


Шаблон функции с численными массивами я составил, а специализацию объявить не могу - при компиляции выходит ошибка: (10): error C2912: явная специализация; "char *maxn<char*>(char *,char *)" не является специализацией функции-шаблона.

Помогите пожалуйста, в подобных темах замечаю, что вместо char* иногда ставят char**, из за этого запутался еще больше.

Заранее спасибо!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru