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


priority_queue (STL/CLR)

Класс шаблона описывает объект, который управляет упорядоченной последовательностью элементов с ограниченным доступом. Адаптер контейнера используется для управления базовым контейнером priority_queue в качестве очереди приоритетов.

В приведенном ниже описании значение совпадает с GValue значением, если последний не является типом ссылок, в этом случае это.Value^ Аналогичным образом, то же самое, что и контейнер, GContainer если последний не является типом ссылок, в этом случае это.Container^

Синтаксис

template<typename Value,
    typename Container>
    ref class priority_queue
        System::ICloneable,
        Microsoft::VisualC::StlClr::IPriorityQueue<GValue, GContainer>
    { ..... };

Параметры

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

Контейнер
Тип базового контейнера.

Требования

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

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

Объявления

Определение типа Description
priority_queue::const_reference (STL/CLR) Тип постоянной ссылки на элемент.
priority_queue::container_type (STL/CLR) Тип базового контейнера.
priority_queue::difference_type (STL/CLR) Тип расстояния со знаком между двумя элементами.
priority_queue::generic_container (STL/CLR) Тип универсального интерфейса для адаптера контейнера.
priority_queue::generic_value (STL/CLR) Тип элемента универсального интерфейса для адаптера контейнера.
priority_queue::reference (STL/CLR) Тип ссылки на элемент.
priority_queue::size_type (STL/CLR) Тип расстояния со знаком между двумя элементами.
priority_queue::value_compare (STL/CLR) Делегат упорядочивания для двух элементов.
priority_queue::value_type (STL/CLR) Тип элемента.
Функция-член Description
priority_queue::assign (STL/CLR) Заменяет все элементы.
priority_queue::empty (STL/CLR) Проверяет отсутствие элементов.
priority_queue::get_container (STL/CLR) Обращается к базовому контейнеру.
priority_queue::pop (STL/CLR) Удаляет элемент hghest-priority.
priority_queue::priority_queue (STL/CLR) Создает объект контейнера.
priority_queue::push (STL/CLR) Добавляет новый элемент.
priority_queue::size (STL/CLR) Подсчитывает количество элементов.
priority_queue::top (STL/CLR) Обращается к элементу с наивысшим приоритетом.
priority_queue::to_array (STL/CLR) Копирует контролируемую последовательность в новый массив.
priority_queue::value_comp (STL/CLR) Копирует делегат упорядочивания для двух элементов.
Свойство Description
priority_queue::top_item (STL/CLR) Обращается к элементу с наивысшим приоритетом.
Operator Description
priority_queue::operator= (STL/CLR) Заменяет управляемую последовательность.

Интерфейсы

Интерфейс Description
ICloneable Дублировать объект.
Значение IPriorityQueue<, контейнер> Обслуживание универсального адаптера контейнера.

Замечания

Объект выделяет и освобождает хранилище для последовательности, которой он управляет через базовый контейнер типа, Containerкоторый сохраняет Value элементы и увеличивается по требованию. Он сохраняет последовательность, упорядоченную как кучу, с самым высоким приоритетом элемент (верхний элемент) легкодоступен и съемный. Объект ограничивает доступ к отправке новых элементов и всплывает только элемент с наивысшим приоритетом, реализуя очередь приоритета.

Объект упорядочивает последовательность, которую он управляет, вызывая сохраненный объект делегата типа priority_queue::value_compare (STL/CLR). При создании priority_queue можно указать сохраненный объект делегата; Если не указан объект делегата, по умолчанию используется сравнение operator<(value_type, value_type). Доступ к этому сохраненного объекта можно получить путем вызова функции-члена priority_queue::value_comp (STL/CLR)().

Такой объект делегата должен навязать строгое слабое упорядочение для значений типа priority_queue::value_type (STL/CLR). Это означает, что для всех двух ключей X и Y:

value_comp()(X, Y) возвращает один и тот же логический результат для каждого вызова.

Если value_comp()(X, Y) значение имеет значение true, то value_comp()(Y, X) должно быть false.

Если value_comp()(X, Y) это правда, то X , как говорят, будет упорядочено раньше Y.

Если !value_comp()(X, Y) && !value_comp()(Y, X) это правда, то X и Y говорят, что имеет эквивалентный порядок.

Для любого элемента X , предшествующего Y управляемой последовательности, key_comp()(Y, X) имеет значение false. (Для объекта делегата по умолчанию ключи никогда не уменьшались.)

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

Так как базовый контейнер сохраняет элементы, упорядоченные как куча:

Контейнер должен поддерживать итераторы случайного доступа.

Элементы с эквивалентным упорядочением могут быть положены в другом порядке, чем они были отправлены. (Порядок не является стабильным.)

Таким образом, кандидаты для базового контейнера включают deque (STL/CLR) и вектор (STL/CLR).

Участники

priority_queue::assign (STL/CLR)

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

Синтаксис

void assign(priority_queue<Value, Container>% right);

Параметры

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

Замечания

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

Пример

// cliext_priority_queue_assign.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

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

    // assign a repetition of values
    Mypriority_queue c2;
    c2.assign(c1);
    for each (wchar_t elem in c2.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
c a b
c a b

priority_queue::const_reference (STL/CLR)

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

Синтаксис

typedef value_type% const_reference;

Замечания

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

Пример

// cliext_priority_queue_const_reference.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

    // display reversed contents " c b a"
    for (; !c1.empty(); c1.pop())
        {   // get a const reference to an element
        Mypriority_queue::const_reference cref = c1.top();
        System::Console::Write("{0} ", cref);
        }
    System::Console::WriteLine();
    return (0);
    }
c b a

priority_queue::container_type (STL/CLR)

Тип базового контейнера.

Синтаксис

typedef Container value_type;

Замечания

Этот тип является синонимом для параметра шаблона Container.

Пример

// cliext_priority_queue_container_type.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

    // display contents " a b c" using container_type
    Mypriority_queue::container_type wc1 = c1.get_container();
    for each (wchar_t elem in wc1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
c a b

priority_queue::difference_type (STL/CLR)

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

Синтаксис

typedef int difference_type;

Замечания

Тип описывает возможное отрицательное число элементов.

Пример

// cliext_priority_queue_difference_type.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

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

    // compute negative difference
    Mypriority_queue::difference_type diff = c1.size();
    c1.push(L'd');
    c1.push(L'e');
    diff -= c1.size();
    System::Console::WriteLine("pushing 2 = {0}", diff);

    // compute positive difference
    diff = c1.size();
    c1.pop();
    c1.pop();
    c1.pop();
    diff -= c1.size();
    System::Console::WriteLine("popping 3 = {0}", diff);
    return (0);
    }
c a b
pushing 2 = -2
popping 3 = 3

priority_queue::empty (STL/CLR)

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

Синтаксис

bool empty();

Замечания

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

Пример

// cliext_priority_queue_empty.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1.get_container())
        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.pop();
    c1.pop();
    c1.pop();
    System::Console::WriteLine("size() = {0}", c1.size());
    System::Console::WriteLine("empty() = {0}", c1.empty());
    return (0);
    }
c a b
size() = 3
empty() = False
size() = 0
empty() = True

priority_queue::generic_container (STL/CLR)

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

Синтаксис

typedef Microsoft::VisualC::StlClr::IPriorityQueue<Value>
    generic_container;

Замечания

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

Пример

// cliext_priority_queue_generic_container.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

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

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

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

    // modify original and display generic
    c1.push(L'e');
    for each (wchar_t elem in gc1->get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
c a b
c a b
d c b a
e d b a c

priority_queue::generic_value (STL/CLR)

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

Синтаксис

typedef GValue generic_value;

Замечания

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

Пример

// cliext_priority_queue_generic_value.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

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

    // get interface to container
    Mypriority_queue::generic_container^ gc1 = %c1;
    for each (wchar_t elem in gc1->get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // display in priority order using generic_value
    for (; !gc1->empty(); gc1->pop())
        {
        Mypriority_queue::generic_value elem = gc1->top();

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

priority_queue::get_container (STL/CLR)

Обращается к базовому контейнеру.

Синтаксис

container_type get_container();

Замечания

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

Пример

// cliext_priority_queue_get_container.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

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

priority_queue::operator= (STL/CLR)

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

Синтаксис

priority_queue <Value, Container>% operator=(priority_queue <Value, Container>% right);

Параметры

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

Замечания

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

Пример

// cliext_priority_queue_operator_as.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

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

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

priority_queue::pop (STL/CLR)

Удаляет элемент с наивысшей кратностью.

Синтаксис

void pop();

Замечания

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

Пример

// cliext_priority_queue_pop.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

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

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

priority_queue::priority_queue (STL/CLR)

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

Синтаксис

priority_queue();
priority_queue(priority_queue<Value, Container> right);
priority_queue(priority_queue<Value, Container> right);
explicit priority_queue(value_compare^ pred);
priority_queue(value_compare^ pred, container_type% cont);
template<typename InIt>
    priority_queue(InIt first, InIt last);
template<typename InIt>
    priority_queue(InIt first, InIt last,
        value_compare^ pred);
template<typename InIt>
    priority_queue(InIt first, InIt last,
        value_compare^ pred, container_type% cont);

Параметры

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

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

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

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

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

Замечания

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

priority_queue();

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

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

priority_queue(priority_queue<Value, Container>% right);

создает упакованный контейнер, который является копией right.get_container()предиката right.value_comp()заказа. Он используется для указания начальной управляемой последовательности, которая является копией последовательности, управляемой объектом очереди справа, с тем же предикатом упорядочения.

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

priority_queue(priority_queue<Value, Container>^ right);

создает упакованный контейнер, который является копией right->get_container()предиката right->value_comp()заказа. Он используется для указания начальной управляемой последовательности, которая является копией последовательности, управляемой объектом *rightочереди, с тем же предикатом упорядочивания.

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

explicit priority_queue(value_compare^ pred);

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

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

priority_queue(value_compare^ pred, container_type cont);

создает пустой контейнер с предикатом заказа, а затем отправляет все элементы cont You use для указания начальной управляемой последовательности из существующего контейнера с указанным предикатом заказа.

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

template<typename InIt> priority_queue(InIt first, InIt last);

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

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

template<typename InIt> priority_queue(InIt first, InIt last, value_compare^ pred);

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

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

template<typename InIt> priority_queue(InIt first, InIt last, value_compare^ pred, container_type% cont);

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

Пример

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

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
typedef cliext::deque<wchar_t> Mydeque;
int main()
    {
// construct an empty container
    Mypriority_queue c1;
    Mypriority_queue::container_type^ wc1 = c1.get_container();
    System::Console::WriteLine("size() = {0}", c1.size());

    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');
    for each (wchar_t elem in wc1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct with an ordering rule
    Mypriority_queue c2 = cliext::greater<wchar_t>();
    System::Console::WriteLine("size() = {0}", c2.size());

    for each (wchar_t elem in wc1)
        c2.push(elem);
    for each (wchar_t elem in c2.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct with an ordering rule by copying an underlying container
    Mypriority_queue c2x =
        gcnew Mypriority_queue(cliext::greater<wchar_t>(), *wc1);
   for each (wchar_t elem in c2x.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct with an iterator range
    Mypriority_queue c3(wc1->begin(), wc1->end());
    for each (wchar_t elem in c3.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct with an iterator range and an ordering rule
    Mypriority_queue c4(wc1->begin(), wc1->end(),
        cliext::greater<wchar_t>());
    for each (wchar_t elem in c4.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct with an iterator range, another container, and an ordering rule
    Mypriority_queue c5(wc1->begin(), wc1->end(),
        cliext::greater<wchar_t>(), *wc1);
    for each (wchar_t elem in c5.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct from a generic container
    Mypriority_queue c6(c3);
    for each (wchar_t elem in c6.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct by copying another container
    Mypriority_queue c7(%c3);
    for each (wchar_t elem in c7.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct with an ordering rule, by copying an underlying container
    Mypriority_queue c8 =
        gcnew Mypriority_queue(cliext::greater<wchar_t>(), *wc1);
    for each (wchar_t elem in c8.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    return (0);
    }
size() = 0
c a b
size() = 0
a c b
a c b
c a b
a c b
a a b c c b
c a b
c a b
a c b

priority_queue::push (STL/CLR)

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

Синтаксис

void push(value_type val);

Замечания

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

Пример

// cliext_priority_queue_push.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

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

priority_queue::reference (STL/CLR)

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

Синтаксис

typedef value_type% reference;

Замечания

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

Пример

// cliext_priority_queue_reference.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

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

    // modify top of priority_queue and redisplay
    Mypriority_queue::reference ref = c1.top();
    ref = L'x';
    for each (wchar_t elem in c1.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
c a b
x a b

priority_queue::size (STL/CLR)

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

Синтаксис

size_type size();

Замечания

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

Пример

// cliext_priority_queue_size.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

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

    // pop an item and reinspect
    c1.pop();
    System::Console::WriteLine("size() = {0} after popping", c1.size());

    // add two elements and reinspect
    c1.push(L'a');
    c1.push(L'b');
    System::Console::WriteLine("size() = {0} after adding 2", c1.size());
    return (0);
    }
c a b
size() = 3 starting with 3
size() = 2 after popping
size() = 4 after adding 2

priority_queue::size_type (STL/CLR)

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

Синтаксис

typedef int size_type;

Замечания

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

Пример

// cliext_priority_queue_size_type.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

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

    // compute positive difference
    Mypriority_queue::size_type diff = c1.size();
    c1.pop();
    c1.pop();
    diff -= c1.size();
    System::Console::WriteLine("size difference = {0}", diff);
    return (0);
    }
c a b
size difference = 2

priority_queue::to_array (STL/CLR)

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

Синтаксис

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

Замечания

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

Пример

// cliext_priority_queue_to_array.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

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

    c1.push(L'd');
    for each (wchar_t elem in c1.get_container())
        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);
    }
d c b a
c a b

priority_queue::top (STL/CLR)

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

Синтаксис

reference top();

Замечания

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

Пример

// cliext_priority_queue_top.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

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

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

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

priority_queue::top_item (STL/CLR)

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

Синтаксис

property value_type back_item;

Замечания

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

Пример

// cliext_priority_queue_top_item.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

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

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

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

priority_queue::value_comp (STL/CLR)

Копирует делегат упорядочивания для двух элементов.

Синтаксис

value_compare^ value_comp();

Замечания

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

Пример

// cliext_priority_queue_value_comp.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    Mypriority_queue::value_compare^ vcomp = c1.value_comp();

    System::Console::WriteLine("compare(L'a', L'a') = {0}",
        vcomp(L'a', L'a'));
    System::Console::WriteLine("compare(L'a', L'b') = {0}",
        vcomp(L'a', L'b'));
    System::Console::WriteLine("compare(L'b', L'a') = {0}",
        vcomp(L'b', L'a'));
    System::Console::WriteLine();

    // test a different ordering rule
    Mypriority_queue c2 = cliext::greater<wchar_t>();
    vcomp = c2.value_comp();

    System::Console::WriteLine("compare(L'a', L'a') = {0}",
        vcomp(L'a', L'a'));
    System::Console::WriteLine("compare(L'a', L'b') = {0}",
        vcomp(L'a', L'b'));
    System::Console::WriteLine("compare(L'b', L'a') = {0}",
        vcomp(L'b', L'a'));
    return (0);
    }
compare(L'a', L'a') = False
compare(L'a', L'b') = True
compare(L'b', L'a') = False

compare(L'a', L'a') = False
compare(L'a', L'b') = False
compare(L'b', L'a') = True

priority_queue::value_compare (STL/CLR)

Делегат упорядочивания для двух значений.

Синтаксис

binary_delegate<value_type, value_type, int> value_compare;

Замечания

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

Пример

// cliext_priority_queue_value_compare.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    Mypriority_queue::value_compare^ vcomp = c1.value_comp();

    System::Console::WriteLine("compare(L'a', L'a') = {0}",
        vcomp(L'a', L'a'));
    System::Console::WriteLine("compare(L'a', L'b') = {0}",
        vcomp(L'a', L'b'));
    System::Console::WriteLine("compare(L'b', L'a') = {0}",
        vcomp(L'b', L'a'));
    System::Console::WriteLine();

    // test a different ordering rule
    Mypriority_queue c2 = cliext::greater<wchar_t>();
    vcomp = c2.value_comp();

    System::Console::WriteLine("compare(L'a', L'a') = {0}",
        vcomp(L'a', L'a'));
    System::Console::WriteLine("compare(L'a', L'b') = {0}",
        vcomp(L'a', L'b'));
    System::Console::WriteLine("compare(L'b', L'a') = {0}",
        vcomp(L'b', L'a'));
    return (0);
    }
compare(L'a', L'a') = False
compare(L'a', L'b') = True
compare(L'b', L'a') = False

compare(L'a', L'a') = False
compare(L'a', L'b') = False
compare(L'b', L'a') = True

priority_queue::value_type (STL/CLR)

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

Синтаксис

typedef Value value_type;

Замечания

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

Пример

// cliext_priority_queue_value_type.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

    // display reversed contents " a b c" using value_type
    for (; !c1.empty(); c1.pop())
        {   // store element in value_type object
        Mypriority_queue::value_type val = c1.top();

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