Поделиться через


deque (STL/CLR)

Класс шаблона описывает объект, который управляет последовательностью элементов с случайным доступом. Контейнер deque используется для управления последовательностью элементов, которые выглядят как непрерывный блок хранилища, но который может расти или сжиматься в любом конце без необходимости копирования оставшихся элементов. Таким образом, он может эффективно double-ended queueреализовать . (Следовательно, имя.)

В приведенном ниже описании то же самое, GValue что Value и в том случае Value^, если последний не является типом ссылок.

Синтаксис

template<typename Value>
    ref class deque
        :   public
        System::ICloneable,
        System::Collections::IEnumerable,
        System::Collections::ICollection,
        System::Collections::Generic::IEnumerable<GValue>,
        System::Collections::Generic::ICollection<GValue>,
        System::Collections::Generic::IList<GValue>,
        Microsoft::VisualC::StlClr::IDeque<GValue>
    { ..... };

Параметры

GValue
Универсальный тип элемента в управляемой последовательности.

Value
Тип элемента в управляемой последовательности.

Требования

Заголовок:<cliext/deque>

Пространство имен: cliext

Объявления

Определение типа Description
deque::const_iterator (STL/CLR) Тип постоянного итератора для управляемой последовательности.
deque::const_reference (STL/CLR) Тип постоянной ссылки на элемент.
deque::const_reverse_iterator (STL/CLR) Тип постоянного обратного итератора для управляемой последовательности.
deque::difference_type (STL/CLR) Тип расстояния со знаком между двумя элементами.
deque::generic_container (STL/CLR) Тип универсального интерфейса для контейнера.
deque::generic_iterator (STL/CLR) Тип итератора универсального интерфейса для контейнера.
deque::generic_reverse_iterator (STL/CLR) Тип обратного итератора для универсального интерфейса контейнера.
deque::generic_value (STL/CLR) Тип элемента универсального интерфейса для контейнера.
deque::iterator (STL/CLR) Тип итератора для управляемой последовательности.
deque::reference (STL/CLR) Тип ссылки на элемент.
deque::reverse_iterator (STL/CLR) Тип обратного итератора для управляемой последовательности.
deque::size_type (STL/CLR) Тип расстояния со знаком между двумя элементами.
deque::value_type (STL/CLR) Тип элемента.
Функция-член Description
deque::assign (STL/CLR) Заменяет все элементы.
deque::at (STL/CLR) Обращается к элементу в указанной позиции.
deque::back (STL/CLR) Обращается к последнему элементу.
deque::begin (STL/CLR) Задает начало управляемой последовательности.
deque::clear (STL/CLR) Удаляет все элементы.
deque::deque (STL/CLR) Создает объект контейнера.
deque::empty (STL/CLR) Проверяет отсутствие элементов.
deque::end (STL/CLR) Задает конец управляемой последовательности.
deque::erase (STL/CLR) Удаляет элементы в указанных позициях.
deque::front (STL/CLR) Обращается к первому элементу.
deque::insert (STL/CLR) Добавляет элементы по указанной позиции.
deque::pop_back (STL/CLR) Удаляет последний элемент.
deque::pop_front (STL/CLR) Удаляет первый элемент.
deque::push_back (STL/CLR) Добавляет новый последний элемент.
deque::push_front (STL/CLR) Добавляет новый первый элемент.
deque::rbegin (STL/CLR) Задает начало обратной управляемой последовательности.
deque::rend (STL/CLR) Задает конец обратной управляемой последовательности.
deque::resize (STL/CLR) Изменяет количество элементов.
deque::size (STL/CLR) Подсчитывает количество элементов.
deque::swap (STL/CLR) Меняет местами содержимое двух контейнеров.
deque::to_array (STL/CLR) Копирует контролируемую последовательность в новый массив.
Свойство Description
deque::back_item (STL/CLR) Обращается к последнему элементу.
deque::front_item (STL/CLR) Обращается к первому элементу.
Operator Description
deque::operator!= (STL/CLR) Определяет, не равны ли два deque объекта.
deque::operator(STL/CLR) Обращается к элементу в указанной позиции.
оператор< (deque) (STL/CLR) Определяет, меньше ли deque объект, чем другой deque объект.
operator<= (deque) (STL/CLR) Определяет deque , меньше ли объект или равен другому deque объекту.
operator= (deque) (STL/CLR) Заменяет управляемую последовательность.
operator== (deque) (STL/CLR) Определяет, равен ли deque объект другому deque объекту.
оператор> (deque) (STL/CLR) Определяет, больше ли deque объект, чем другой deque объект.
operator>= (deque) (STL/CLR) Определяет deque , больше ли объект или равен другому deque объекту.

Интерфейсы

Интерфейс Description
ICloneable Дублировать объект.
IEnumerable Последовательность элементов.
ICollection Обслуживание группы элементов.
IEnumerable<T> Последовательность с помощью типизированных элементов.
ICollection<T> Сохраняйте группу типизированных элементов.
IList<T> Обслуживание упорядоченной группы типизированных элементов.
Значение IDeque<> Обслуживание универсального контейнера.

Замечания

Объект выделяет и освобождает хранилище для последовательности, которую он управляет с помощью сохраненного массива дескрипторов, которые определяют блоки Value элементов. Массив растет по требованию. Рост происходит таким образом, что затраты на добавление нового элемента являются постоянным временем, и остальные элементы не нарушаются. Вы также можете удалить элемент в любом конце константного времени и не беспокоить оставшиеся элементы. Таким образом, deque является хорошим кандидатом для базового контейнера для очереди классов шаблонов (STL/CLR) или стека классов шаблонов (STL/CLR).

deque Объект поддерживает итераторы случайного доступа, что означает, что можно ссылаться на элемент непосредственно с учетом его числовой позиции, отсчитывая от нуля для первого (переднего) элемента, чтобы deque::size (STL/CLR)() - 1 для последнего (back) элемента. Это также означает, что deque является хорошим кандидатом для базового контейнера для класса шаблонов priority_queue (STL/CLR).

Декв итератор сохраняет дескриптор для связанного объекта deque, а также предвзятость указанного элемента. Итераторы можно использовать только с связанными объектами контейнеров. Предвзятость элемента deque не обязательно совпадает с его положением. Первый вставленный элемент имеет нулю предвзятости, следующий добавленный элемент имеет предвзятость 1, но следующий предустановленный элемент имеет предвзятость -1.

Вставка или удаление элементов в любом конце не изменяет значение элемента, хранящегося в любом допустимом предвзятости. Однако вставка или удаление внутреннего элемента может изменить значение элемента, хранящееся при заданной предвзятости, поэтому значение, указанное итератором, также может измениться. (Контейнеру может потребоваться скопировать элементы вверх или вниз, чтобы создать отверстие перед вставкой или заполнить отверстие после удаления.) Тем не менее, деque iterator остается действительным до тех пор, пока его предвзятость обозначает допустимый элемент. Кроме того, допустимый итератор остается деreferencable - вы можете использовать его для доступа или изменения значения элемента, которое он обозначает , до тех пор, пока его предвзятость не равна предвзятости для итератора, возвращаемого end().

Удаление или удаление элемента вызывает деструктор для его сохраненного значения. Удаление контейнера удаляет все элементы. Таким образом, контейнер, тип элемента которого является классом ссылок, гарантирует, что никакие элементы не выходят из контейнера. Обратите внимание, что контейнер дескрипторов не уничтожает его элементы.

Участники

deque::assign (STL/CLR)

Заменяет все элементы.

Синтаксис

void assign(size_type count, value_type val);
template<typename InIt>
    void assign(InIt first, InIt last);
void assign(System::Collections::Generic::IEnumerable<Value>^ right);

Параметры

count
Число элементов для вставки.

first
Начало диапазона для вставки.

last
Конец диапазона для вставки.

right
Перечисление для вставки.

Val
Значение элемента для вставки.

Замечания

Первая функция-член заменяет контролируемую последовательность повторением элементов счетчика значений. Он используется для заполнения контейнера элементами с одинаковым значением.

Если InIt это целочисленный тип, вторая функция-член работает так же, как assign((size_type)first, (value_type)last). В противном случае он заменяет управляемую последовательность последовательностью [first, last). Он используется для создания управляемой последовательности копии другой последовательности.

Третья функция-член заменяет контролируемую последовательность последовательностью, назначенной перечислителем справа. Он используется для создания управляемой последовательности копии последовательности, описанной перечислителем.

Пример

// cliext_deque_assign.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // assign a repetition of values
    cliext::deque<wchar_t> c2;
    c2.assign(6, L'x');
    for each (wchar_t elem in c2)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // assign an iterator range
    c2.assign(c1.begin(), c1.end() - 1);
    for each (wchar_t elem in c2)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // assign an enumeration
    c2.assign(   // NOTE: cast is not needed
        (System::Collections::Generic::IEnumerable<wchar_t>^)%c1);
    for each (wchar_t elem in c2)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
x x x x x x
a b
a b c

deque::at (STL/CLR)

Обращается к элементу в указанной позиции.

Синтаксис

reference at(size_type pos);

Параметры

pos
Позиция элемента, к которому осуществляется доступ.

Замечания

Функция-член возвращает ссылку на элемент управляемой последовательности в позиции pos. Вы используете его для чтения или записи элемента, позиция которого вы знаете.

Пример

// cliext_deque_at.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display contents " a b c" using at
    for (int i = 0; i < c1.size(); ++i)
        System::Console::Write("{0} ", c1.at(i));
    System::Console::WriteLine();

    // change an entry and redisplay
    c1.at(1) = L'x';
    for (int i = 0; i < c1.size(); ++i)
        System::Console::Write("{0} ", c1[i]);
    System::Console::WriteLine();
    return (0);
    }
a b c
a x c

deque::back (STL/CLR)

Обращается к последнему элементу.

Синтаксис

reference back();

Замечания

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

Пример

// cliext_deque_back.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // inspect last item
    System::Console::WriteLine("back() = {0}", c1.back());

    // alter last item and reinspect
    c1.back() = L'x';
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
a b c
back() = c
a b x

deque::back_item (STL/CLR)

Обращается к последнему элементу.

Синтаксис

property value_type back_item;

Замечания

Свойство обращается к последнему элементу управляемой последовательности, который должен быть непуст. Вы используете его для чтения или записи последнего элемента, когда вы знаете, что он существует.

Пример

// cliext_deque_back_item.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // inspect last item
    System::Console::WriteLine("back_item = {0}", c1.back_item);

    // alter last item and reinspect
    c1.back_item = L'x';
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
a b c
back_item = c
a b x

deque::begin (STL/CLR)

Задает начало управляемой последовательности.

Синтаксис

iterator begin();

Замечания

Функция-член возвращает итератор случайного доступа, указывающий первый элемент управляемой последовательности или только за пределами пустой последовательности. Он используется для получения итератора, который обозначает current начало управляемой последовательности, но его состояние может измениться, если длина управляемой последовательности изменяется.

Пример

// cliext_deque_begin.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // inspect first two items
    cliext::deque<wchar_t>::iterator it = c1.begin();
    System::Console::WriteLine("*begin() = {0}", *it);
    System::Console::WriteLine("*++begin() = {0}", *++it);

    // alter first two items and reinspect
    *--it = L'x';
    *++it = L'y';
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
a b c
*begin() = a
*++begin() = b
x y c

deque::clear (STL/CLR)

Удаляет все элементы.

Синтаксис

void clear();

Замечания

Функция-член фактически вызывает deque::erase (STL/CLR) deque::begin (STL/CLR)(), ( deque::end (STL/CLR).()) Используйте его, чтобы убедиться, что управляемая последовательность пуста.

Пример

// cliext_deque_clear.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // clear the container and reinspect
    c1.clear();
    System::Console::WriteLine("size() = {0}", c1.size());

    // add elements and clear again
    c1.push_back(L'a');
    c1.push_back(L'b');

    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    c1.clear();
    System::Console::WriteLine("size() = {0}", c1.size());
    return (0);
    }
a b c
size() = 0
a b
size() = 0

deque::const_iterator (STL/CLR)

Тип постоянного итератора для управляемой последовательности.

Синтаксис

typedef T2 const_iterator;

Замечания

Тип описывает объект неопределенного типа T2 , который может служить итератором произвольного доступа для управляемой последовательности.

Пример

// cliext_deque_const_iterator.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display contents " a b c"
    cliext::deque<wchar_t>::const_iterator cit = c1.begin();
    for (; cit != c1.end(); ++cit)
        System::Console::Write("{0} ", *cit);
    System::Console::WriteLine();
    return (0);
    }
a b c

deque::const_reference (STL/CLR)

Тип постоянной ссылки на элемент.

Синтаксис

typedef value_type% const_reference;

Замечания

Тип описывает константную ссылку на элемент.

Пример

// cliext_deque_const_reference.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display initial contents " a b c"
    cliext::deque<wchar_t>::const_iterator cit = c1.begin();
    for (; cit != c1.end(); ++cit)
        {   // get a const reference to an element
        cliext::deque<wchar_t>::const_reference cref = *cit;
        System::Console::Write("{0} ", cref);
        }
    System::Console::WriteLine();
    return (0);
    }
a b c

deque::const_reverse_iterator (STL/CLR)

Тип константного обратного итератора для управляемой последовательности..

Синтаксис

typedef T4 const_reverse_iterator;

Замечания

Тип описывает объект неопределенного типа T4 , который может служить константным обратным итератором для управляемой последовательности.

Пример

// cliext_deque_const_reverse_iterator.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display contents " a b c" reversed
    cliext::deque<wchar_t>::const_reverse_iterator crit = c1.rbegin();
    cliext::deque<wchar_t>::const_reverse_iterator crend = c1.rend();
    for (; crit != crend; ++crit)
        System::Console::Write("{0} ", *crit);
    System::Console::WriteLine();
    return (0);
    }
c b a

deque::deque (STL/CLR)

Создает объект контейнера.

Синтаксис

deque();
deque(deque<Value>% right);
deque(deque<Value>^ right);
explicit deque(size_type count);
deque(size_type count, value_type val);
template<typename InIt>
    deque(InIt first, InIt last);
deque(System::Collections::Generic::IEnumerable<Value>^ right);

Параметры

count
Число элементов для вставки.

first
Начало диапазона для вставки.

last
Конец диапазона для вставки.

right
Объект или диапазон для вставки.

Val
Значение элемента для вставки.

Замечания

Конструктор:

deque();

инициализирует управляемую последовательность без элементов. Он используется для указания пустой управляемой последовательности.

Конструктор:

deque(deque<Value>% right);

инициализирует управляемую последовательность с помощью последовательности [right.begin(), right.end()). Он используется для указания начальной управляемой последовательности, которая является копией последовательности, управляемой правом объекта deque. Дополнительные сведения об итераторах см. в разделе deque::begin (STL/CLR) и deque::end (STL/CLR).

Конструктор:

deque(deque<Value>^ right);

инициализирует управляемую последовательность с помощью последовательности [right->begin(), right->end()). Он используется для указания начальной управляемой последовательности, которая является копией последовательности, управляемой объектом deque, дескриптор которого прав.

Конструктор:

explicit deque(size_type count);

инициализирует контролируемую последовательность с элементами подсчета каждого с значением value_type(). Он используется для заполнения контейнера элементами, имеющими значение по умолчанию.

Конструктор:

deque(size_type count, value_type val);

инициализирует контролируемую последовательность с элементами подсчета значений. Он используется для заполнения контейнера элементами с одинаковым значением.

Конструктор:

template<typename InIt>

deque(InIt first, InIt last);

инициализирует управляемую последовательность с помощью последовательности [first, last). Он используется для создания управляемой последовательности копии другой последовательности.

Конструктор:

deque(System::Collections::Generic::IEnumerable<Value>^ right);

инициализирует контролируемую последовательность с последовательностью, назначенной перечислителем справа. Он используется для создания управляемой последовательности копии другой последовательности, описанной перечислителем.

Пример

// cliext_deque_construct.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
// construct an empty container
    cliext::deque<wchar_t> c1;
    System::Console::WriteLine("size() = {0}", c1.size());

    // construct with a repetition of default values
    cliext::deque<wchar_t> c2(3);
    for each (wchar_t elem in c2)
        System::Console::Write("{0} ", (int)elem);
    System::Console::WriteLine();

    // construct with a repetition of values
    cliext::deque<wchar_t> c3(6, L'x');
    for each (wchar_t elem in c3)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct with an iterator range
    cliext::deque<wchar_t>::iterator it = c3.end();
    cliext::deque<wchar_t> c4(c3.begin(), --it);
    for each (wchar_t elem in c4)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct with an enumeration
    cliext::deque<wchar_t> c5(   // NOTE: cast is not needed
        (System::Collections::Generic::IEnumerable<wchar_t>^)%c3);
    for each (wchar_t elem in c5)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct by copying another container
    cliext::deque<wchar_t> c7(c3);
    for each (wchar_t elem in c7)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct by copying a container handle
    cliext::deque<wchar_t> c8(%c3);
    for each (wchar_t elem in c8)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    return (0);
    }
size() = 0
0 0 0
x x x x x x
x x x x x
x x x x x x
x x x x x x
x x x x x x

deque::difference_type (STL/CLR)

Типы подписанного расстояния между двумя элементами.

Синтаксис

typedef int difference_type;

Замечания

Тип описывает число подписанных элементов.

Пример

// cliext_deque_difference_type.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // compute positive difference
    cliext::deque<wchar_t>::difference_type diff = 0;
    for (cliext::deque<wchar_t>::iterator it = c1.begin();
        it != c1.end(); ++it) ++diff;
    System::Console::WriteLine("end()-begin() = {0}", diff);

    // compute negative difference
    diff = 0;
    for (cliext::deque<wchar_t>::iterator it = c1.end();
        it != c1.begin(); --it) --diff;
    System::Console::WriteLine("begin()-end() = {0}", diff);
    return (0);
    }
a b c
end()-begin() = 3
begin()-end() = -3

deque::empty (STL/CLR)

Проверяет отсутствие элементов.

Синтаксис

bool empty();

Замечания

Эта функция-член возвращает значение true для пустой управляемой последовательности. Он эквивалентен deque::size (STL/CLR)() == 0. Он используется для проверки того, является ли деку пустым.

Пример

// cliext_deque_empty.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    System::Console::WriteLine("size() = {0}", c1.size());
    System::Console::WriteLine("empty() = {0}", c1.empty());

    // clear the container and reinspect
    c1.clear();
    System::Console::WriteLine("size() = {0}", c1.size());
    System::Console::WriteLine("empty() = {0}", c1.empty());
    return (0);
    }
a b c
size() = 3
empty() = False
size() = 0
empty() = True

deque::end (STL/CLR)

Задает конец управляемой последовательности.

Синтаксис

iterator end();

Замечания

Функция-член возвращает итератор случайного доступа, который указывает непосредственно за пределы управляемой последовательности. Он используется для получения итератора, который обозначает current конец управляемой последовательности, но его состояние может измениться, если длина управляемой последовательности изменяется.

Пример

// cliext_deque_end.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // inspect last two items
    cliext::deque<wchar_t>::iterator it = c1.end();
    --it;
    System::Console::WriteLine("*-- --end() = {0}", *--it);
    System::Console::WriteLine("*--end() = {0}", *++it);

    // alter first two items and reinspect
    *--it = L'x';
    *++it = L'y';
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
a b c
*-- --end() = b
*--end() = c
a x y

deque::erase (STL/CLR)

Удаляет элементы в указанных позициях.

Синтаксис

iterator erase(iterator where);
iterator erase(iterator first, iterator last);

Параметры

first
Начало диапазона для удаления.

last
Конец диапазона для удаления.

where
Элемент для удаления.

Замечания

Первая функция-член удаляет элемент управляемой последовательности, на который указывает место. Он используется для удаления одного элемента.

Вторая функция-член удаляет элементы управляемой последовательности в диапазоне [first, last). Он используется для удаления нуля или нескольких смежных элементов.

Обе функции-члены возвращают итератор, указывающий первый элемент, оставшийся за пределами удаленных элементов, или deque::end (STL/CLR),() если такой элемент отсутствует.

При удалении элементов число копий элементов линейно в количестве элементов между окончанием стирания и более близким концом последовательности. (При удалении одного или нескольких элементов в любом конце последовательности не происходит никаких копий элементов.)

Пример

// cliext_deque_erase.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // erase an element and reinspect
    System::Console::WriteLine("erase(begin()) = {0}",
        *c1.erase(c1.begin()));

    // add elements and display " b c d e"
    c1.push_back(L'd');
    c1.push_back(L'e');
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // erase all but end
    cliext::deque<wchar_t>::iterator it = c1.end();
    System::Console::WriteLine("erase(begin(), end()-1) = {0}",
        *c1.erase(c1.begin(), --it));
    System::Console::WriteLine("size() = {0}", c1.size());
    return (0);
    }
a b c
erase(begin()) = b
b c d e
erase(begin(), end()-1) = e
size() = 1

deque::front (STL/CLR)

Обращается к первому элементу.

Синтаксис

reference front();

Замечания

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

Пример

// cliext_deque_front.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // inspect first item
    System::Console::WriteLine("front() = {0}", c1.front());

    // alter first item and reinspect
    c1.front() = L'x';
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
a b c
front() = a
x b c

deque::front_item (STL/CLR)

Обращается к первому элементу.

Синтаксис

property value_type front_item;

Замечания

Свойство обращается к первому элементу управляемой последовательности, который должен быть непуст. Вы используете его для чтения или записи первого элемента, когда вы знаете, что он существует.

Пример

// cliext_deque_front_item.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // inspect first item
    System::Console::WriteLine("front_item = {0}", c1.front_item);

    // alter first item and reinspect
    c1.front_item = L'x';
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
a b c
front_item = a
x b c

deque::generic_container (STL/CLR)

Тип универсального интерфейса для контейнера.

Синтаксис

typedef Microsoft::VisualC::StlClr::
    IDeque<generic_value>
    generic_container;

Замечания

Тип описывает универсальный интерфейс для этого класса контейнера шаблона.

Пример

// cliext_deque_generic_container.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct a generic container
    cliext::deque<wchar_t>::generic_container^ gc1 = %c1;
    for each (wchar_t elem in gc1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // modify generic and display original
    gc1->insert(gc1->end(), L'd');
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // modify original and display generic
    c1.push_back(L'e');

    System::Collections::IEnumerator^ enum1 =
        gc1->GetEnumerator();
    while (enum1->MoveNext())
        System::Console::Write("{0} ", enum1->Current);
    System::Console::WriteLine();
    return (0);
    }
a b c
a b c
a b c d
a b c d e

deque::generic_iterator (STL/CLR)

Тип итератора для использования с универсальным интерфейсом для контейнера.

Синтаксис

typedef Microsoft::VisualC::StlClr::Generic::
    ContainerRandomAccessIterator<generic_value> generic_iterator;

Замечания

Тип описывает универсальный итератор, который можно использовать с универсальным интерфейсом для этого класса контейнеров шаблона.

Пример

// cliext_deque_generic_iterator.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct a generic container
    cliext::deque<wchar_t>::generic_container^ gc1 = %c1;
    for each (wchar_t elem in gc1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // modify generic and display original
    cliext::deque<wchar_t>::generic_iterator gcit = gc1->begin();
    cliext::deque<wchar_t>::generic_value gcval = *gcit;
    *++gcit = gcval;
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
a b c
a b c
a a c

deque::generic_reverse_iterator (STL/CLR)

Тип обратного итератора для использования с универсальным интерфейсом для контейнера.

Синтаксис

typedef Microsoft::VisualC::StlClr::Generic::
    ReverseRandomAccessIterator<generic_value> generic_reverse_iterator;

Замечания

Тип описывает универсальный обратный итератор, который можно использовать с универсальным интерфейсом для этого класса контейнеров шаблона.

Пример

// cliext_deque_generic_reverse_iterator.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct a generic container
    cliext::deque<wchar_t>::generic_container^ gc1 = %c1;
    for each (wchar_t elem in gc1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // modify generic and display original
    cliext::deque<wchar_t>::generic_reverse_iterator gcit = gc1->rbegin();
    cliext::deque<wchar_t>::generic_value gcval = *gcit;
    *++gcit = gcval;
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
a b c
a b c
a c c

deque::generic_value (STL/CLR)

Тип элемента для использования с универсальным интерфейсом для контейнера.

Синтаксис

typedef GValue generic_value;

Замечания

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

Пример

// cliext_deque_generic_value.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct a generic container
    cliext::deque<wchar_t>::generic_container^ gc1 = %c1;
    for each (wchar_t elem in gc1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // modify generic and display original
    cliext::deque<wchar_t>::generic_iterator gcit = gc1->begin();
    cliext::deque<wchar_t>::generic_value gcval = *gcit;
    *++gcit = gcval;
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
a b c
a b c
a a c

deque::insert (STL/CLR)

Добавляет элементы по указанной позиции.

Синтаксис

iterator insert(iterator where, value_type val);
void insert(iterator where, size_type count, value_type val);
template<typename InIt>
    void insert(iterator where, InIt first, InIt last);
void insert(iterator where,
    System::Collections::Generic::IEnumerable<Value>^ right);

Параметры

count
Число элементов для вставки.

first
Начало диапазона для вставки.

last
Конец диапазона для вставки.

right
Перечисление для вставки.

Val
Значение элемента для вставки.

where
Где в контейнере необходимо вставить раньше.

Замечания

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

Первая функция-член вставляет элемент со значением val и возвращает итератор, указывающий только что вставленный элемент. Он используется для вставки одного элемента перед местом, указанным итератором.

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

Если InIt имеет целочисленный тип, первая функция-член ведет себя так же, как insert(where, (size_type)first, (value_type)last). В противном случае он вставляет последовательность [first, last). Он используется для вставки нуля или нескольких смежных элементов, скопированных из другой последовательности.

Четвертая функция-член вставляет последовательность, указанную справа. Он используется для вставки последовательности, описанной перечислителем.

При вставке одного элемента число копий элементов линейно в количестве элементов между точкой вставки и более близким концом последовательности. (При вставке одного или нескольких элементов в любом конце последовательности не происходит никаких копий элементов.) Если InIt является входным итератором, третья функция-член фактически выполняет одну вставку для каждого элемента в последовательности. В противном случае при вставке N элементов число копий элементов является линейным N , а также число элементов между точкой вставки и более близким концом последовательности.

Пример

// cliext_deque_insert.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // insert a single value using iterator
    cliext::deque<wchar_t>::iterator it = c1.begin();
    System::Console::WriteLine("insert(begin()+1, L'x') = {0}",
        *c1.insert(++it, L'x'));
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // insert a repetition of values
    cliext::deque<wchar_t> c2;
    c2.insert(c2.begin(), 2, L'y');
    for each (wchar_t elem in c2)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // insert an iterator range
    it = c1.end();
    c2.insert(c2.end(), c1.begin(), --it);
    for each (wchar_t elem in c2)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // insert an enumeration
    c2.insert(c2.begin(),   // NOTE: cast is not needed
        (System::Collections::Generic::IEnumerable<wchar_t>^)%c1);
    for each (wchar_t elem in c2)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
a b c
insert(begin()+1, L'x') = x
a x b c
y y
y y a x b
a x b c y y a x b

deque::iterator (STL/CLR)

Тип итератора для управляемой последовательности.

Синтаксис

typedef T1 iterator;

Замечания

Тип описывает объект неопределенного типа T1 , который может служить итератором случайного доступа для управляемой последовательности.

Пример

// cliext_deque_iterator.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display contents " a b c"
    cliext::deque<wchar_t>::iterator it = c1.begin();
    for (; it != c1.end(); ++it)
        System::Console::Write("{0} ", *it);
    System::Console::WriteLine();

    // alter first element and redisplay
    it = c1.begin();
    *it = L'x';
    for (; it != c1.end(); ++it)
        System::Console::Write("{0} ", *it);
    System::Console::WriteLine();
    return (0);
    }
a b c
x b c

deque::operator!= (STL/CLR)

Не равное сравнение.

Синтаксис

template<typename Value>
    bool operator!=(deque<Value>% left,
        deque<Value>% right);

Параметры

left
Левый контейнер для сравнения.

right
Правый контейнер для сравнения.

Замечания

Функция оператора возвращает .!(left == right) Он используется для проверки того, не упорядочен ли левый порядок вправо при сравнении двух деквов по элементу.

Пример

// cliext_deque_operator_ne.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // assign to a new container
    cliext::deque<wchar_t> c2;
    c2.push_back(L'a');
    c2.push_back(L'b');
    c2.push_back(L'd');

    // display contents " a b d"
    for each (wchar_t elem in c2)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    System::Console::WriteLine("[a b c] != [a b c] is {0}",
        c1 != c1);
    System::Console::WriteLine("[a b c] != [a b d] is {0}",
        c1 != c2);
    return (0);
    }
a b c
a b d
[a b c] != [a b c] is False
[a b c] != [a b d] is True

deque::operator(STL/CLR)

Обращается к элементу в указанной позиции.

Синтаксис

reference operator[](size_type pos);

Параметры

pos
Позиция элемента, к которому осуществляется доступ.

Замечания

Оператор-член возвращает ссылку на элемент в позиции pos. Вы используете его для доступа к элементу, позиция которого вы знаете.

Пример

// cliext_deque_operator_sub.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display contents " a b c" using subscripting
    for (int i = 0; i < c1.size(); ++i)
        System::Console::Write("{0} ", c1[i]);
    System::Console::WriteLine();

    // change an entry and redisplay
    c1[1] = L'x';
    for (int i = 0; i < c1.size(); ++i)
        System::Console::Write("{0} ", c1[i]);
    System::Console::WriteLine();
    return (0);
    }
a b c
a x c

deque::pop_back (STL/CLR)

Удаляет последний элемент.

Синтаксис

void pop_back();

Замечания

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

Пример

// cliext_deque_pop_back.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // pop an element and redisplay
    c1.pop_back();
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
a b c
a b

deque::pop_front (STL/CLR)

Удаляет первый элемент.

Синтаксис

void pop_front();

Замечания

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

Пример

// cliext_deque_pop_front.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // pop an element and redisplay
    c1.pop_front();
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
a b c
b c

deque::push_back (STL/CLR)

Добавляет новый последний элемент.

Синтаксис

void push_back(value_type val);

Замечания

Функция-член вставляет элемент со значением val в конце управляемой последовательности. Он используется для добавления другого элемента в деку.

Пример

// cliext_deque_push_back.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
a b c

deque::push_front (STL/CLR)

Добавляет новый первый элемент.

Синтаксис

void push_front(value_type val);

Замечания

Функция-член вставляет элемент со значением val в начале управляемой последовательности. Вы используете его для подготовки другого элемента к deque.

Пример

// cliext_deque_push_front.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_front(L'a');
    c1.push_front(L'b');
    c1.push_front(L'c');

    // display contents " c b a"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
c b a

deque::rbegin (STL/CLR)

Задает начало обратной управляемой последовательности.

Синтаксис

reverse_iterator rbegin();

Замечания

Функция-член возвращает обратный итератор, указывающий последний элемент управляемой последовательности или только за началом пустой последовательности. Следовательно, он обозначает beginning обратную последовательность. Он используется для получения итератора, обозначающего current начало управляемой последовательности, отображаемой в обратном порядке, но его состояние может измениться, если длина управляемой последовательности изменяется.

Пример

// cliext_deque_rbegin.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // inspect first two items in reversed sequence
    cliext::deque<wchar_t>::reverse_iterator rit = c1.rbegin();
    System::Console::WriteLine("*rbegin() = {0}", *rit);
    System::Console::WriteLine("*++rbegin() = {0}", *++rit);

    // alter first two items and reinspect
    *--rit = L'x';
    *++rit = L'y';
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
a b c
*rbegin() = c
*++rbegin() = b
a y x

deque::reference (STL/CLR)

Тип ссылки на элемент.

Синтаксис

typedef value_type% reference;

Замечания

Тип описывает ссылку на элемент.

Пример

// cliext_deque_reference.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display initial contents " a b c"
    cliext::deque<wchar_t>::iterator it = c1.begin();
    for (; it != c1.end(); ++it)
        {   // get a reference to an element
        cliext::deque<wchar_t>::reference ref = *it;
        System::Console::Write("{0} ", ref);
        }
    System::Console::WriteLine();

    // modify contents " a b c"
    for (it = c1.begin(); it != c1.end(); ++it)
        {   // get a reference to an element
        cliext::deque<wchar_t>::reference ref = *it;

        ref += (wchar_t)(L'A' - L'a');
        System::Console::Write("{0} ", ref);
        }
    System::Console::WriteLine();
    return (0);
    }
a b c
A B C

deque::rend (STL/CLR)

Задает конец обратной управляемой последовательности.

Синтаксис

reverse_iterator rend();

Замечания

Функция-член возвращает обратный итератор, указывающий только за начало управляемой последовательности. Следовательно, он обозначает end обратную последовательность. Он используется для получения итератора, который обозначает current конец управляемой последовательности, наблюдаемой в обратном порядке, но его состояние может измениться, если длина управляемой последовательности изменяется.

Пример

// cliext_deque_rend.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // inspect first two items
    cliext::deque<wchar_t>::reverse_iterator rit = c1.rend();
    --rit;
    System::Console::WriteLine("*-- --rend() = {0}", *--rit);
    System::Console::WriteLine("*--rend() = {0}", *++rit);

    // alter first two items and reinspect
    *--rit = L'x';
    *++rit = L'y';
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
a b c
*-- --rend() = b
*--rend() = a
y x c

deque::resize (STL/CLR)

Изменяет количество элементов.

Синтаксис

void resize(size_type new_size);
void resize(size_type new_size, value_type val);

Параметры

new_size
Новый размер управляемой последовательности.

Val
Значение элемента заполнения.

Замечания

Функции-члены обе гарантируют, что deque::size (STL/CLR)() возвращает new_size. Если она должна сделать управляемой последовательности длиннее, первая функция-член добавляет элементы со значениемvalue_type(), а вторая функция-член добавляет элементы со значением val. Чтобы сделать управляемой последовательности короче, обе функции-члены эффективно очищают время последнего элемента deque::size (STL/CLR).() - new_size Вы используете его для обеспечения того, чтобы у управляемой последовательности был размер new_size, обрезая или заполняя текущую контролируемую последовательность.

Пример

// cliext_deque_resize.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
// construct an empty container and pad with default values
    cliext::deque<wchar_t> c1;
    System::Console::WriteLine("size() = {0}", c1.size());
    c1.resize(4);
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", (int)elem);
    System::Console::WriteLine();

    // resize to empty
    c1.resize(0);
    System::Console::WriteLine("size() = {0}", c1.size());

    // resize and pad
    c1.resize(5, L'x');
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
size() = 0
0 0 0 0
size() = 0
x x x x x

deque::reverse_iterator (STL/CLR)

Тип обратного итератора для управляемой последовательности.

Синтаксис

typedef T3 reverse_iterator;

Замечания

Тип описывает объект неопределенного типа T3 , который может служить обратным итератором для управляемой последовательности.

Пример

// cliext_deque_reverse_iterator.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display contents " a b c" reversed
    cliext::deque<wchar_t>::reverse_iterator rit = c1.rbegin();
    for (; rit != c1.rend(); ++rit)
        System::Console::Write("{0} ", *rit);
    System::Console::WriteLine();

    // alter first element and redisplay
    rit = c1.rbegin();
    *rit = L'x';
    for (; rit != c1.rend(); ++rit)
        System::Console::Write("{0} ", *rit);
    System::Console::WriteLine();
    return (0);
    }
c b a
x b a

deque::size (STL/CLR)

Подсчитывает количество элементов.

Синтаксис

size_type size();

Замечания

Функция-член возвращает длину управляемой последовательности. Он используется для определения количества элементов в текущей управляемой последовательности. Если все, что вам нужно, заключается в том, имеет ли последовательность ненулевое значение, см . раздел deque::empty (STL/CLR)().

Пример

// cliext_deque_size.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    System::Console::WriteLine("size() = {0} starting with 3", c1.size());

    // clear the container and reinspect
    c1.clear();
    System::Console::WriteLine("size() = {0} after clearing", c1.size());

    // add elements and clear again
    c1.push_back(L'a');
    c1.push_back(L'b');
    System::Console::WriteLine("size() = {0} after adding 2", c1.size());
    return (0);
    }
a b c
size() = 3 starting with 3
size() = 0 after clearing
size() = 2 after adding 2

deque::size_type (STL/CLR)

Тип подписанного расстояния между двумя элементами.

Синтаксис

typedef int size_type;

Замечания

Тип описывает число элементов, не являющихся отрицательными.

Пример

// cliext_deque_size_type.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // compute positive difference
    cliext::deque<wchar_t>::size_type diff = c1.end() - c1.begin();
    System::Console::WriteLine("end()-begin() = {0}", diff);
    return (0);
    }
a b c
end()-begin() = 3

deque::swap (STL/CLR)

Меняет местами содержимое двух контейнеров.

Синтаксис

void swap(deque<Value>% right);

Параметры

right
Контейнер для обмена содержимым.

Замечания

Функция-член переключает управляемые последовательности между *this и справа. Он делает это в постоянном времени, и он не вызывает исключений. Вы используете его в качестве быстрого способа обмена содержимым двух контейнеров.

Пример

// cliext_deque_swap.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct another container with repetition of values
    cliext::deque<wchar_t> c2(5, L'x');
    for each (wchar_t elem in c2)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // swap and redisplay
    c1.swap(c2);
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    for each (wchar_t elem in c2)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
a b c
x x x x x
x x x x x
a b c

deque::to_array (STL/CLR)

Копирует контролируемую последовательность в новый массив.

Синтаксис

cli::array<Value>^ to_array();

Замечания

Функция-член возвращает массив, содержащий контролируемую последовательность. Он используется для получения копии управляемой последовательности в форме массива.

Пример

// cliext_deque_to_array.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // copy the container and modify it
    cli::array<wchar_t>^ a1 = c1.to_array();

    c1.push_back(L'd');
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // display the earlier array copy
    for each (wchar_t elem in a1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
a b c d
a b c

deque::value_type (STL/CLR)

Тип элемента.

Синтаксис

typedef Value value_type;

Замечания

Тип является синонимом значения параметра шаблона.

Пример

// cliext_deque_value_type.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display contents " a b c" using value_type
    for (cliext::deque<wchar_t>::iterator it = c1.begin();
        it != c1.end(); ++it)
        {   // store element in value_type object
        cliext::deque<wchar_t>::value_type val = *it;

        System::Console::Write("{0} ", val);
        }
    System::Console::WriteLine();
    return (0);
    }
a b c

operator< (deque) (STL/CLR)

Deque меньше сравнения.

Синтаксис

template<typename Value>
    bool operator<(deque<Value>% left,
        deque<Value>% right);

Параметры

left
Левый контейнер для сравнения.

right
Правый контейнер для сравнения.

Замечания

Функция оператора возвращает значение true, если для наименьшей позиции i , для которой !(right[i] < left[i]) она также имеет значение true left[i] < right[i]. В противном случае возвращается значение left->size() < right->size() "Вы используете", чтобы проверить, упорядочивается ли слева справа при сравнении двух элементов по элементу.

Пример

// cliext_deque_operator_lt.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // assign to a new container
    cliext::deque<wchar_t> c2;
    c2.push_back(L'a');
    c2.push_back(L'b');
    c2.push_back(L'd');

    // display contents " a b d"
    for each (wchar_t elem in c2)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    System::Console::WriteLine("[a b c] < [a b c] is {0}",
        c1 < c1);
    System::Console::WriteLine("[a b c] < [a b d] is {0}",
        c1 < c2);
    return (0);
    }
a b c
a b d
[a b c] < [a b c] is False
[a b c] < [a b d] is True

operator<= (deque) (STL/CLR)

Вывод меньше или равного сравнения.

Синтаксис

template<typename Value>
    bool operator<=(deque<Value>% left,
        deque<Value>% right);

Параметры

left
Левый контейнер для сравнения.

right
Правый контейнер для сравнения.

Замечания

Функция оператора возвращает .!(right < left) Он используется для проверки того, не упорядочен ли левый не упорядочен сразу после сравнения двух элементов по элементу.

Пример

// cliext_deque_operator_le.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // assign to a new container
    cliext::deque<wchar_t> c2;
    c2.push_back(L'a');
    c2.push_back(L'b');
    c2.push_back(L'd');

    // display contents " a b d"
    for each (wchar_t elem in c2)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    System::Console::WriteLine("[a b c] <= [a b c] is {0}",
        c1 <= c1);
    System::Console::WriteLine("[a b d] <= [a b c] is {0}",
        c2 <= c1);
    return (0);
    }
a b c
a b d
[a b c] <= [a b c] is True
[a b d] <= [a b c] is False

operator= (deque) (STL/CLR)

Заменяет управляемую последовательность.

Синтаксис

deque<Value>% operator=(deque<Value>% right);

Параметры

right
Контейнер для копирования.

Замечания

Оператор-член копирует право на объект, а затем возвращает .*this Он используется для замены управляемой последовательности копией управляемой последовательности справа.

Пример

// cliext_deque_operator_as.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // assign to a new container
    cliext::deque<wchar_t> c2;
    c2 = c1;
    for each (wchar_t elem in c2)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
a b c
a b c

operator== (deque) (STL/CLR)

Сравнение равенства.

Синтаксис

template<typename Value>
    bool operator==(deque<Value>% left,
        deque<Value>% right);

Параметры

left
Левый контейнер для сравнения.

right
Правый контейнер для сравнения.

Замечания

Функция оператора возвращает значение true, только если последовательности, контролируемые левой и правой, имеют одинаковую длину и для каждой позиции. left[i] == right[i]i Он используется для проверки того, упорядочен ли левый порядок вправо при сравнении двух деквов по элементу.

Пример

// cliext_deque_operator_eq.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // assign to a new container
    cliext::deque<wchar_t> c2;
    c2.push_back(L'a');
    c2.push_back(L'b');
    c2.push_back(L'd');

    // display contents " a b d"
    for each (wchar_t elem in c2)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    System::Console::WriteLine("[a b c] == [a b c] is {0}",
        c1 == c1);
    System::Console::WriteLine("[a b c] == [a b d] is {0}",
        c1 == c2);
    return (0);
    }
a b c
a b d
[a b c] == [a b c] is True
[a b c] == [a b d] is False

operator> (deque) (STL/CLR)

Deque больше сравнения.

Синтаксис

template<typename Value>
    bool operator>(deque<Value>% left,
        deque<Value>% right);

Параметры

left
Левый контейнер для сравнения.

right
Правый контейнер для сравнения.

Замечания

Функция оператора возвращает .right < left Он используется для проверки того, упорядочен ли левый слева сразу после сравнения двух элементов по элементу.

Пример

// cliext_deque_operator_gt.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // assign to a new container
    cliext::deque<wchar_t> c2;
    c2.push_back(L'a');
    c2.push_back(L'b');
    c2.push_back(L'd');

    // display contents " a b d"
    for each (wchar_t elem in c2)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    System::Console::WriteLine("[a b c] > [a b c] is {0}",
        c1 > c1);
    System::Console::WriteLine("[a b d] > [a b c] is {0}",
        c2 > c1);
    return (0);
    }
a b c
a b d
[a b c] > [a b c] is False
[a b d] > [a b c] is True

operator>= (deque) (STL/CLR)

Выложение больше или равное сравнение.

Синтаксис

template<typename Value>
    bool operator>=(deque<Value>% left,
        deque<Value>% right);

Параметры

left
Левый контейнер для сравнения.

right
Правый контейнер для сравнения.

Замечания

Функция оператора возвращает .!(left < right) Он используется для проверки того, не упорядочен ли левый слева перед правом , если два дека сравниваются по элементу.

Пример

// cliext_deque_operator_ge.cpp
// compile with: /clr
#include <cliext/deque>

int main()
    {
    cliext::deque<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'b');
    c1.push_back(L'c');

    // display contents " a b c"
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // assign to a new container
    cliext::deque<wchar_t> c2;
    c2.push_back(L'a');
    c2.push_back(L'b');
    c2.push_back(L'd');

    // display contents " a b d"
    for each (wchar_t elem in c2)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    System::Console::WriteLine("[a b c] >= [a b c] is {0}",
        c1 >= c1);
    System::Console::WriteLine("[a b c] >= [a b d] is {0}",
        c1 >= c2);
    return (0);
    }
a b c
a b d
[a b c] >= [a b c] is True
[a b c] >= [a b d] is False