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

Что такое шаблоны в C++? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Какая у буста лицензия? http://www.cyberforum.ru/cpp-beginners/thread858962.html
Если я использую boost, должен ли я буду весь проект распространять бесплатно и открыть исходный текст?
C++ Нужна из текстового файла с целыми числами найти минимальное и вывести его на экран Нужно из текстового файла с целыми числами найти минимальное и вывести его на экран http://www.cyberforum.ru/cpp-beginners/thread858941.html
Сохранение экрана консоли C++
Допустим, что то есть на экране размером 80x50 и я хочу записать все что есть на экране в чар массив, но не знаю как это сделать. Подскажите как будет правильно это сделать. char mas_screen; for (int i = 1; i < 51 ; i++) { for (int j=1; j < 81; j++) { gotoxy(i,j); cin>>mas_screen; } }
C++ Из файла прочитать множество произвольных целых чисел,упорядочить и вывести в поле вывода
По идее должно получится нечто типа: (но нужна форма и использование openFileDialog1 saveFileDialog1) #include <iostream> #include <time.h> #include <fstream> #include <math.h> using namespace std; int main() { int chislo = 0; int x=0,j,a;
C++ Длинная арифметика http://www.cyberforum.ru/cpp-beginners/thread858903.html
Длинная арифметика — это набор программных средств (структуры данных и алгоритмы), которые позволяют работать с числами гораздо больших величин, чем это позволяют стандартные типы данных. Посоветуйте книгу по этой теме где нормально пояснено арифметические операции с использованием длинной арифметики.
C++ Массив и подмассив (определить, является ли второй массив подмассивом первого) Поставлена следующая задача: Ввод из: input.txt Вывод в: output.txt Дано два одномерных массива. Один из N элементов, второй из R элементов. Необходимо определить, является ли второй массив подмассивом первого. Если да, то вывести номер позиции в первом массиве, начиная с которой начинается второй массив, в противном случае вывести слово «NO». Входные данные: В первой строке дано... подробнее

Показать сообщение отдельно
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
10.05.2013, 20:14     Что такое шаблоны в C++?
taras atavin, Чтобы использовать numeric_limits<type>::blabla, а не numeric_int_limits::blabla. Во-первых - люто помогает в шаблонах, не нужно ведь знать ТОЧНЫЙ тип, во-вторых просто более эстетично.
Специализация, вообще говоря, может быть любого размера, она создается для конкретного типа, чтобы указать, что для данного конкретного типа, значения/функции/действия именно такие. Специализация шаблонного класса - это полное переопределение полей/функций шаблонного класса, просто потому, что ты не можешь унаследоваться от класса, который специализируешь (только написать некие общие traits, для полей/функций/действий, который не зависят от конкретного типа).
C++
1
2
3
4
5
6
7
8
9
template<typename T>
class F
{
};
 
template<>
class F<int> : public F<int>
{
};
Очевидно не является корректным кодом. Тоже самое с функциями, ты не сможешь вызвать из специализированной версии шаблонную версию (используя тот же шаблонный параметр).

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
struct FTraits
{
   typedef void void_type;
};
 
template<typename T>
struct F : FTraits
{
   static constexpr int value = 0;
};
 
template<>
struct F<int> : Ftraits
{
   static constexpr int value = std::numeric_limits<int>::max();
};
 
static_assert(std::is_same<F<int>::void_type, F<double>::void_type>::value, "Not same");
static_assert(F<int>::value != F<double>::value, "Equals in primary and in spec");
 
int main() {}
А это вполне себе ок.
 
Текущее время: 20:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru