Спеціалізація шаблону
Перейти до навігації
Перейти до пошуку
Спеціалізація шаблону — одна із можливостей шаблонів у C++. Вона дозволяє задавати альтернативні реалізації шаблону, коли значення параметрів шаблону є певними наперед заданими типами.
Спеціалізація шаблону зазвичай використовується для:
- оптимізації — спеціалізована версія шаблону матиме оптимальніший код за рахунок знання особливостей типу;
- спрощення коду — винесення часткових випадків у окремі реалізації спростить код (подібно до використання патерну проектування стратегія).
- Реалізація функції sort() залежить від численних обмінів елементів значеннями. Якщо операція обміну значеннями є швидкою, як для атомарних типів чи вказівників, то її можна використовувати безпосередньо. Якщо ж вона є повільною, тоді потрібно створити для кожного елемента вказівник і здійснювати обмін значеннями серед вказівників.
- Стандартним прикладом спеціалізації шаблону є vector<bool> — спеціалізація шаблона послідовного контейнера бібліотеки STL, яка використовує однобітне зберігання значень типу bool.
На відміну від шаблонів функцій, шаблони класів можуть мати часткові спеціалізації. Це відбувається при спеціалізації шаблону класу, коли конкретні значення типів задаються тільки для частини параметрів шаблону.
Часткова спеціалізація шаблонів функцій не підтримується, в тому числі для функцій класу, але подібного ефекту можна досягти за допомогою перевантаження функцій.
- Alexandrescu, Andrei (1 лютого 2001). Modern C++ Design. Addison Wesley. с. 23. ISBN 0-201-70431-5.
- Vandevoorde, David; Josuttis, Nicolai M. (2003). C++ Templates: The complete Guide. Addison-Wesley. ISBN 0-201-73484-2.
Це незавершена стаття про структури даних. Ви можете допомогти проєкту, виправивши або дописавши її. |