МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів Контакти
Тлумачний словник |
|
|||||||
АлокаториКожний контейнерний клас у STL використовує клас Allocator, в якому інкапсульована інформація про моделі пам’яті, яка використовується у програмі. Різні моделі пам’яті подають різні вимоги до покажчиків, посилань, розмірів цілих значень і т.п. Клас Allocator містить в собі інформацію про покажчики, константні покажчики, посилання, константні посилання, розміри об’єктів, функції розміщення та виділення об’єктів, а також деякі інші функції. Припускається, що час виконання операції над алокаторами сталий. Зважаючи на те, що інформація про моделі пам’яті інкапсульована у алокаторі, контейнери STL можуть пристосуватися до різних моделей пам’яті за допомогою різних алокаторів. У STL визначено стандартний алокатор, застосований за замовчуванням, який достатній для переважної більшості програм. Він має такий інтерфейс: class allocator { public: typedef size_t size_type; typedef ptrdiff difference_type; template<class T> class types { typedef T* pointer; typedef const T* const_pointer; typedef T& reference; typedef const T& const_reference; typedef T value_type; }; allocator(); ~ allocator(); template<class T> typename types<T>::pointer address(types<T>::reference x) const; template<class T> typename types<T>:: const_pointer address(types<T>::const_reference x) const; template<class T,class U> typename types<T>::pointer allocate(size_type n, types<U>::const_pointer hint); template<class T> void deallocate(types<T>::pointer p); size_type max_size()const; }; class allocator:: types<void> { //specialization public: typedef void* pointer; typedef const void * const_pointer; typedef void value_type; }; void* operator new(size_t N, allocator& a); }; В алокаторі тип даних інкапсульований у вкладеному шаблоні-класі types, який має такі члени, залежні від параметра шаблона T : typedef T* pointer; — тип покажчика в моделі пам’яті. typedef const T* const-pointer; — тип константного покажчика в моделі пам’яті. typedef T& reference; — тип адреси в моделі пам’яті. typedef const T& const-reference; — тип константної адреси в моделі пам’яті. typedef T valuetype; — тип об’єктів у контейнері. Інші члени алокатора мають такий зміст: typedef sizet sizetype; — тип, який подає розмір найбільшого об’єкта в моделі пам’яті. typedef ptrdiff differencetype; — тип, який подає різницю між двома покажчиками в моделі пам’яті. allocator(); — конструктор алокатора. ~ allocator(); — деструктор алокатора. template<class T> typename types<T>::pointer address(types<T>::referense x) const; — визначає покажчик об’єкта х. template<class T> typename types<T>:: const_pointer address(types<T>::const_referense x) const; — визначає константний покажчик об’єкта х. template<class T,class U> typename types<T>::pointer allocate(sizetype n, types<U>::constpointer hint); — виділяє пам’ять для n об’єктів типу sizetype , не конструюючи їх; використовує глобальну операцію new; зазначимо, що різні моделі пам’яті потребують різних функцій Allocate, що і є причиною інкапсуляції цієї функції в алокаторі; покажчик hint можна використовувати як засіб локального засилання; у функціях — членах контейнерів як hint використовується this. template<class T> void deallocate(types<T>::pointer p); — звільняє пам’ять з покажчиком p, використовуючи глобальну операцію delete, перед цим викликом deallocate усі об’єкти у звільнюваної пам’яті мають бути ліквідовані. sizetype maxsize ()const; — визначає максимальне значення differencetype.
|
||||||||
|