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

«Шаблоны шаблонов» vs «шаблоны с параметрами-шаблонами». - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 38, средняя оценка - 4.66
Доктор ТуамОсес
Заблокирован
09.10.2010, 00:15     «Шаблоны шаблонов» vs «шаблоны с параметрами-шаблонами». #1
«Шаблоны шаблонов» vs «шаблоны с параметрами-шаблонами».
Есть ли разница в этих понятиях?

Если есть, то в чём?

И где (в каких конструкциях) можно использовать шаблон с параметром-шаблоном или шаблон шаблонов?
И какую выгоду получает программист от использования «шаблонов шаблонов»/«шаблонов с параметрами-шаблонами» по сравнению с прочими средствами C++?

Я пока только знаю единственное (из стандарта на C++ ISO/IEC 14882 Second edition 2003-10-15) про такое использование шаблона с параметром шаблоном:



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
#include <iostream>
using std::cout ;
using std::cin ;
using std::endl ;
 
template < class T > class A {
    public :
    short x ;
} ;
 
// Специализация шаблона A
template < class T > class A < T* > {
    public :
    long x ;
} ;
 
// Шаблон класса с параметром-шаблоном, имеющим вариант
// со специализацией.
template < template < class U > class V > class C {
    public :
    V < int  >  y ;
    V < int* >  z ;
} ;
 
C < A > c ;
 
int main (void) {
    cout << sizeof ( c.y.x ) << endl ; // 2
    cout << sizeof ( c.z.x ) << endl ; // 4
    char c ;
    cin >> c ;
    return 0 ;
}
__________________________________________________-

Добавлено через 3 часа 9 минут
Чо молчим?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2010, 00:15     «Шаблоны шаблонов» vs «шаблоны с параметрами-шаблонами».
Посмотрите здесь:

Шаблоны С++ C++
C++ шаблоны
C++ Шаблоны C++
C++ Шаблоны
Помогите писать на С++ через шаблоны. Консуле я писал, но надо писать исползуя шаблоны C++
Шаблоны template с ограниченными параметрами C++
Шаблоны C++
C++ Шаблоны в C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
09.10.2010, 12:44     «Шаблоны шаблонов» vs «шаблоны с параметрами-шаблонами». #2
Понятие "шаблон шаблонов" мне незнакомо. Шаблоны в С++ могут иметь в качестве параметра целочисленную константу времени компиляции, конкретный тип (в том числе и инстанциацию шаблона) и шаблон (у буржуев такое модно называть template template parameters). Шаблон A, принимающий в качестве параметра шаблон B, обычно делает это затем, чтобы так или иначе инстанциировать B. Например, создавая какой-то шаблон, занимающийся работой с набором данных, мы можем указывать ему, в каком контейнере он должен хранить данные: динамический массив, список или что-то другое.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
template <typename Data, template<typename T> class Container>
class MyDataProcessor {
public:
// ...
private:
    Container<Data> myData;
};
 
// Стандартные контейнеры имеют дополнительный параметр шаблона - аллокатор.
// А в MyDataProcessor нужен контейнер с одним параметром.
template<typename T> class StdVector: public std::vector<T> {};
template<typename T> class StdList: public std::list<T> {};
 
// Создадим обработчик данных на основе списка для int и на основе вектора для float
MyDataProcessor<int, StdList> intProcessor;
MyDataProcessor<float, StdVector> floatProcessor;
Доктор ТуамОсес
Заблокирован
17.12.2010, 01:40  [ТС]     «Шаблоны шаблонов» vs «шаблоны с параметрами-шаблонами». #3
Цитата Сообщение от Nick Alte Посмотреть сообщение
у буржуев такое модно называть template template parameters
Дык это и есть как раз "шаблон шаблонов"
Yandex
Объявления
17.12.2010, 01:40     «Шаблоны шаблонов» vs «шаблоны с параметрами-шаблонами».
Ответ Создать тему
Опции темы

Текущее время: 22:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru