Топ питань
Часова шкала
Чат
Перспективи

Спеціалізація шаблону

З Вікіпедії, вільної енциклопедії

Remove ads

Спеціалізація шаблону — одна із можливостей шаблонів у C++. Вона дозволяє задавати альтернативні реалізації шаблону, коли значення параметрів шаблону є певними наперед заданими типами.

Спеціалізація шаблону зазвичай використовується для:

  • оптимізації — спеціалізована версія шаблону матиме оптимальніший код за рахунок знання особливостей типу;
  • спрощення коду — винесення часткових випадків у окремі реалізації спростить код (подібно до використання патерну проектування стратегія).
Remove ads

Приклади

  • Реалізація функції sort() залежить від численних обмінів елементів значеннями. Якщо операція обміну значеннями є швидкою, як для атомарних типів чи вказівників, то її можна використовувати безпосередньо. Якщо ж вона є повільною, тоді потрібно створити для кожного елемента вказівник і здійснювати обмін значеннями серед вказівників.
  • Стандартним прикладом спеціалізації шаблону є vector<bool> — спеціалізація шаблона послідовного контейнера бібліотеки STL, яка використовує однобітне зберігання значень типу bool.
Remove ads

Часткова спеціалізація шаблону

На відміну від шаблонів функцій, шаблони класів можуть мати часткові спеціалізації. Це відбувається при спеціалізації шаблону класу, коли конкретні значення типів задаються тільки для частини параметрів шаблону.

Часткова спеціалізація шаблонів функцій не підтримується, в тому числі для функцій класу, але подібного ефекту можна досягти за допомогою перевантаження функцій.

Література

  • 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.
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads