Spec-Zone .ru
спецификации, руководства, описания, API
ADC домой > Ссылочная библиотека> Ссылка> Дарвин> Разное пространство пользователя ссылка API

 


stl_deque.h

Включает:

Введение

Это - внутренний заголовочный файл, включенный другими заголовками библиотеки. Вы не должны пытаться использовать его непосредственно.



Классы

_Deque_base


Функции

__ deque_buf_size
_M_initialize_map
оператор _Deque_iterator

__ deque_buf_size


inline size_t __deque_buf_size(
    size_t __size) 
Параметры
size
Размер элемента.
Возвращаемое значение

Число (не размер байта) элементов на узел.

Эта функция началась как клудж компилятора от SGI, но, кажется, полезная обертка вокруг повторного константного выражения. Эти '512' tuneable (и никакой другой код не должен изменяться), но никакое расследование не было сделано начиная с наследования кода SGI. @endif

Обсуждение

@if maint @brief Эта функция управляет размером узлов памяти.


_M_initialize_map


template<typename _Tp, typename _Alloc> void _Deque_base<_Tp, _Alloc>:: _M_initialize_map(
    size_t __num_elements) 
Параметры
num_elements
Количество T, для которого можно выделить площадь сначала.
Возвращаемое значение

Ничто.

Начальное базовое расположение памяти является немного сложным... @endif

Обсуждение

@if maint @brief хранение Расположения.


оператор _Deque_iterator


template<typename _Tp, typename _Ref, typename _Ptr> struct _Deque_iterator { 
    typedef _Deque_iterator<_Tp, _Tp&, _Tp*> iterator; 
    typedef _Deque_iterator<_Tp, const _Tp&, const _Tp*> const_iterator;  
    static size_t _S_buffer_size() {
        return __deque_buf_size(
            sizeof(
                _Tp));
        }  typedef random_access_iterator_tag iterator_category; 
    typedef _Tp value_type; 
    typedef _Ptr pointer; 
    typedef _Ref reference; 
    typedef size_t size_type; 
    typedef ptrdiff_t difference_type; 
    typedef _Tp** _Map_pointer; 
    typedef _Deque_iterator _Self;  
    _Tp*_M_cur; 
    _Tp*_M_first; 
    _Tp*_M_last; 
    _Map_pointer _M_node;  
    _Deque_iterator(
        _Tp* __x,
        _Map_pointer __y) : _M_cur(
        __x), _M_first(
        *__y), _M_last(
        *__y + _S_buffer_size()), _M_node(__y) {
        }  _Deque_iterator() : _M_cur(0), _M_first(0), _M_last(0), _M_node(0) {
        }  _Deque_iterator(
        const iterator& __x) : _M_cur(
        __x._M_cur), _M_first(
        __x._M_first), _M_last(
        __x._M_last), _M_node(__x._M_node) {
        }  reference operator*() const ;
Обсуждение

@brief двухсторонняя очередь:: итератор.

Довольно мало интеллекта здесь. Большая часть функциональности двухсторонней очереди фактически выдана к этому классу. Двухсторонняя очередь содержит два из них внутренне, отмечая ее допустимый диапазон. Доступ к элементам сделан как смещения любого из тех двух, полагаясь на оператора, перегружающегося в этом классе.

@if maint Все функции являются op перегрузками за исключением _M_set_node. @endif

Последнее обновление: 20.06.2006