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

Зачем нужен шаблон как параметр шаблона? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Реализация идеи (2) (определить в одной папке песни формата мп3 с ОДИНАКОВЫМИ исполнителями) http://www.cyberforum.ru/cpp-beginners/thread848292.html
Хочу сделать такаю прогу. Что должна делать программа. Она должна определять в одной папке песни формата мп3 с ОДИНАКОВЫМИ исполнителями(тоесть по инфе которая держиться в Свойствах - Подробно -...
C++ r6010 - Abort() (тот самый Страуструпп) И так, след код, выдает мне АБОРТ, сразу после того как я введу показатели и нажму Энтер (прога считает площадь прямоугольника(Страуструпп как всегда, блещет умом)): #include... http://www.cyberforum.ru/cpp-beginners/thread848285.html
Можно ли столько всего учить? C++
Всем добрый вечер. Сейчас я изучаю C++(знаю что такое классы,функции,указатели,массивы,ссылки и т.д) всего уделяю компьютеру 12 часов в неделю(понедельник 4 часа,среда 4 часа,пятница 4 часа) так вот...
нужна рекомендация! C++
#include "stdafx.h" #include <stdio.h> #include <iostream> #include <math.h> using namespace std; int main() { setlocale (LC_CTYPE, "Russian");
C++ Обработка числовых последовательностей с использованием вектора http://www.cyberforum.ru/cpp-beginners/thread848254.html
Написать функции для заполнения вектора исходными данными. Заполнение вектора должно быть реализовано с использованием механизма перегрузки функций (в зависимости от желания пользователя): - с...
C++ Полоска Есть задание, которое я не могу понять: Задана полоска длиной 2^k клеток и шириной в одну клетку. Полоску сгибают пополам так, чтобы правая половинка оказалась под левой. Сгибание продолжают до тех... подробнее

Показать сообщение отдельно
Jupiter
Каратель
Эксперт С++
6556 / 3977 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
25.04.2013, 16:57
Цитата Сообщение от mzarb Посмотреть сообщение
но что-то не особо понятно зачем
Чтобы передавать шаблоны в качестве параметров, но при этом не указывать параметры этих шаблонов, другими словами - обязать параметры шаблона быть шаблонами, но при этом не указывать параметры параметров шаблона
В качестве примера - шаблон класса, параметром которого может может быть только шаблон принимающий два параметра.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <vector>
#include <deque>
#include <list>
 
template<template<class T, class A = std::allocator<T> > class Cont>
class MyClass
{
    Cont<int> mCont;
};
 
template<class T, class R>
class TestClass
{
};
 
int main()
{
    MyClass<std::vector> obj_vec;
    MyClass<std::list> obj_list;
    MyClass<std::deque> obj_deque;
    MyClass<TestClass> obj_test;
}
Как видишь в main задается лишь контейнер, тогда как тип элемента контейнера задаем внутри, хотя если нам это потребуется то мы можем сделать так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <vector>
#include <deque>
#include <list>
 
template<class T, template<class, class A = std::allocator<T> > class Cont>
class MyClass
{
    Cont<T> mCont;
};
 
template<class T, class R>
class TestClass
{
};
 
int main()
{
    MyClass<int, std::vector> obj_vec;
    MyClass<int, std::list> obj_list;
    MyClass<int, std::deque> obj_deque;
    MyClass<int, TestClass> obj_test;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru