Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Контакти
 


Тлумачний словник
Авто
Автоматизація
Архітектура
Астрономія
Аудит
Біологія
Будівництво
Бухгалтерія
Винахідництво
Виробництво
Військова справа
Генетика
Географія
Геологія
Господарство
Держава
Дім
Екологія
Економетрика
Економіка
Електроніка
Журналістика та ЗМІ
Зв'язок
Іноземні мови
Інформатика
Історія
Комп'ютери
Креслення
Кулінарія
Культура
Лексикологія
Література
Логіка
Маркетинг
Математика
Машинобудування
Медицина
Менеджмент
Метали і Зварювання
Механіка
Мистецтво
Музика
Населення
Освіта
Охорона безпеки життя
Охорона Праці
Педагогіка
Політика
Право
Програмування
Промисловість
Психологія
Радіо
Регилия
Соціологія
Спорт
Стандартизація
Технології
Торгівля
Туризм
Фізика
Фізіологія
Філософія
Фінанси
Хімія
Юриспунденкция






Алокатори

Кожний контейнерний клас у 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.




Переглядів: 536

<== попередня сторінка | наступна сторінка ==>
Адаптери | STL та об’єктно-орієнтоване програмування

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

 

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.004 сек.