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


list (STL/CLR)

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

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

Синтаксис

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

Параметры

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

Требования

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

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

Объявления

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

Интерфейсы

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

Замечания

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

list Объект поддерживает двунаправленные итераторы, что означает, что можно переходить к смежным элементам с учетом итератора, обозначающего элемент в управляемой последовательности. Специальный головной узел соответствует итератору, возвращаемого в списке::end (STL/CLR)(). Этот итератор можно уменьшать, чтобы достичь последнего элемента в управляемой последовательности, если он присутствует. Вы можете увеличить итератор списка для доступа к головному узлу, а затем сравнить его с равным end(). Но вы не можете разыменовыть итератор, возвращаемый end().

Обратите внимание, что нельзя ссылаться на элемент списка непосредственно с учетом его числового положения, который требует итератора случайного доступа. Поэтому список недоступен в качестве базового контейнера для класса шаблонов priority_queue (STL/CLR).

Итератор списка сохраняет дескриптор в связанном узле списка, который, в свою очередь, сохраняет дескриптор связанного контейнера. Итераторы можно использовать только с связанными объектами контейнеров. Итератор списка остается допустимым до тех пор, пока связанный узел списка связан с некоторым списком. Кроме того, допустимый итератор деreferencable - его можно использовать для доступа или изменения значения элемента, которое он назначает , до тех пор, пока он не равен end().

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

Участники

list::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_list_assign.cpp
// compile with: /clr
#include <cliext/list>

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

    // assign a repetition of values
    cliext::list<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
    cliext::list<wchar_t>::iterator it = c1.end();
    c2.assign(c1.begin(), --it);
    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

list::back (STL/CLR)

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

Синтаксис

reference back();

Замечания

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

Пример

// cliext_list_back.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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

list::back_item (STL/CLR)

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

Синтаксис

property value_type back_item;

Замечания

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

Пример

// cliext_list_back_item.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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

list::begin (STL/CLR)

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

Синтаксис

iterator begin();

Замечания

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

Пример

// cliext_list_begin.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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::list<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

list::clear (STL/CLR)

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

Синтаксис

void clear();

Замечания

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

Пример

// cliext_list_clear.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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

list::const_iterator (STL/CLR)

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

Синтаксис

typedef T2 const_iterator;

Замечания

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

Пример

// cliext_list_const_iterator.cpp
// compile with: /clr
#include <cliext/list>

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

    // display contents " a b c"
    cliext::list<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

list::const_reference (STL/CLR)

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

Синтаксис

typedef value_type% const_reference;

Замечания

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

Пример

// cliext_list_const_reference.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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::list<wchar_t>::const_iterator cit = c1.begin();
    for (; cit != c1.end(); ++cit)
        {   // get a const reference to an element
        cliext::list<wchar_t>::const_reference cref = *cit;
        System::Console::Write("{0} ", cref);
        }
    System::Console::WriteLine();
    return (0);
    }
a b c

list::const_reverse_iterator (STL/CLR)

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

Синтаксис

typedef T4 const_reverse_iterator;

Замечания

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

Пример

// cliext_list_const_reverse_iterator.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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::list<wchar_t>::const_reverse_iterator crit = c1.rbegin();
    cliext::list<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

list::difference_type (STL/CLR)

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

Синтаксис

typedef int difference_type;

Замечания

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

Пример

// cliext_list_difference_type.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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::list<wchar_t>::difference_type diff = 0;
    for (cliext::list<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::list<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

list::empty (STL/CLR)

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

Синтаксис

bool empty();

Замечания

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

Пример

// cliext_list_empty.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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

list::end (STL/CLR)

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

Синтаксис

iterator end();

Замечания

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

Пример

// cliext_list_end.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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::list<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

list::erase (STL/CLR)

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

Синтаксис

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

Параметры

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

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

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

Замечания

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

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

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

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

Пример

// cliext_list_erase.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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::list<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

list::front (STL/CLR)

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

Синтаксис

reference front();

Замечания

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

Пример

// cliext_list_front.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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

list::front_item (STL/CLR)

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

Синтаксис

property value_type front_item;

Замечания

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

Пример

// cliext_list_front_item.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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

list::generic_container (STL/CLR)

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

Синтаксис

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

Замечания

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

Пример

// cliext_list_generic_container.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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::list<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

list::generic_iterator (STL/CLR)

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

Синтаксис

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

Замечания

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

Пример

// cliext_list_generic_iterator.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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::list<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::list<wchar_t>::generic_iterator gcit = gc1->begin();
    cliext::list<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

list::generic_reverse_iterator (STL/CLR)

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

Синтаксис

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

Замечания

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

Пример

// cliext_list_generic_reverse_iterator.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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::list<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::list<wchar_t>::generic_reverse_iterator gcit = gc1->rbegin();
    cliext::list<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

list::generic_value (STL/CLR)

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

Синтаксис

typedef GValue generic_value;

Замечания

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

Пример

// cliext_list_generic_value.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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::list<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::list<wchar_t>::generic_iterator gcit = gc1->begin();
    cliext::list<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

list::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_list_insert.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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::list<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::list<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();

    // insert a single value using index
    it = c2.begin();
    ++it, ++it, ++it;
    c2.insert(it, L'z');
    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

list::iterator (STL/CLR)

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

Синтаксис

typedef T1 iterator;

Замечания

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

Пример

// cliext_list_iterator.cpp
// compile with: /clr
#include <cliext/list>

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

    // display contents " a b c"
    cliext::list<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

list::list (STL/CLR)

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

Синтаксис

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

Параметры

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

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

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

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

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

Замечания

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

list();

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

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

list(list<Value>% right);

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

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

list(list<Value>^ right);

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

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

explicit list(size_type count);

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

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

list(size_type count, value_type val);

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

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

template<typename InIt>

list(InIt first, InIt last);

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

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

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

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

Пример

// cliext_list_construct.cpp
// compile with: /clr
#include <cliext/list>

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

    // construct with a repetition of default values
    cliext::list<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::list<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::list<wchar_t>::iterator it = c3.end();
    cliext::list<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::list<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::list<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::list<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

list::merge (STL/CLR)

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

Синтаксис

void merge(list<Value>% right);
template<typename Pred2>
    void merge(list<Value>% right, Pred2 pred);

Параметры

Пред
Сравнение пар элементов.

right
Контейнер для слияния.

Замечания

Первая функция-член удаляет все элементы из последовательности, управляемой справа , и вставляет их в контролируемую последовательность. Обе последовательности должны быть упорядочены operator< ранее элементами. Элементы не должны уменьшаться по мере выполнения по любой последовательности. Результирующая последовательность также упорядочена по operator<. Эта функция-член используется для объединения двух последовательностей, увеличивающих значение в последовательность, которая также увеличивается.

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

Обе функции выполняют стабильное слияние. Ни один из элементов в исходной управляемой последовательности не будет обратно в результирующей управляемой последовательности. Кроме того, если пара элементов X и Y в результирующей управляемой последовательности имеет эквивалентное упорядочение - !(X < Y) && !(X < Y) элемент из исходной управляемой последовательности появляется перед элементом из последовательности, управляемой справа.

Пример

// cliext_list_merge.cpp
// compile with: /clr
#include <cliext/list>

typedef cliext::list<wchar_t> Mylist;
int main()
    {
    cliext::list<wchar_t> c1;
    c1.push_back(L'a');
    c1.push_back(L'c');
    c1.push_back(L'e');

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

    cliext::list<wchar_t> c2;
    c2.push_back(L'b');
    c2.push_back(L'd');
    c2.push_back(L'f');

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

    // merge and display
    cliext::list<wchar_t> c3(c1);
    c3.merge(c2);
    for each (wchar_t elem in c3)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    System::Console::WriteLine("c2.size() = {0}", c2.size());

    // sort descending, merge descending, and redisplay
    c1.sort(cliext::greater<wchar_t>());
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    c3.sort(cliext::greater<wchar_t>());
    for each (wchar_t elem in c3)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    c3.merge(c1, cliext::greater<wchar_t>());
    for each (wchar_t elem in c3)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    System::Console::WriteLine("c1.size() = {0}", c1.size());
    return (0);
    }
a c e
b d f
a b c d e f
c2.size() = 0
e c a
f e d c b a
f e e d c c b a a
c1.size() = 0

list::operator= (STL/CLR)

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

Синтаксис

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

Параметры

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

Замечания

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

Пример

// cliext_list_operator_as.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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::list<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

list::pop_back (STL/CLR)

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

Синтаксис

void pop_back();

Замечания

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

Пример

// cliext_list_pop_back.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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

list::pop_front (STL/CLR)

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

Синтаксис

void pop_front();

Замечания

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

Пример

// cliext_list_pop_front.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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

list::push_back (STL/CLR)

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

Синтаксис

void push_back(value_type val);

Замечания

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

Пример

// cliext_list_push_back.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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

list::push_front (STL/CLR)

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

Синтаксис

void push_front(value_type val);

Замечания

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

Пример

// cliext_list_push_front.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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

list::rbegin (STL/CLR)

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

Синтаксис

reverse_iterator rbegin();

Замечания

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

Пример

// cliext_list_rbegin.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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::list<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

list::reference (STL/CLR)

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

Синтаксис

typedef value_type% reference;

Замечания

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

Пример

// cliext_list_reference.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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::list<wchar_t>::iterator it = c1.begin();
    for (; it != c1.end(); ++it)
        {   // get a reference to an element
        cliext::list<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::list<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

list::remove (STL/CLR)

Удаляет элемент с указанным значением.

Синтаксис

void remove(value_type val);

Параметры

Val
Значение удаляемого элемента.

Замечания

Функция-член удаляет элемент в управляемой последовательности, для которой ((System::Object^)val)->Equals((System::Object^)x) задано значение true (если таковой имеется). Он используется для удаления произвольного элемента с указанным значением.

Пример

// cliext_list_remove.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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();

    // fail to remove and redisplay
    c1.remove(L'A');
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // remove and redisplay
    c1.remove(L'b');
    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

list::remove_if (STL/CLR)

Удаляет элементы, которые проходят указанный тест.

Синтаксис

template<typename Pred1>
    void remove_if(Pred1 pred);

Параметры

Пред
Проверьте удаление элементов.

Замечания

Функция-член удаляет из управляемой последовательности (удаляет) каждый элемент X , для которого pred(X) имеет значение true. Он используется для удаления всех элементов, удовлетворяющих условию, заданному в качестве функции или делегата.

Пример

// cliext_list_remove_if.cpp
// compile with: /clr
#include <cliext/list>

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

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

    // fail to remove and redisplay
    c1.remove_if(cliext::binder2nd<cliext::equal_to<wchar_t> >(
        cliext::equal_to<wchar_t>(), L'd'));
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // remove and redisplay
    c1.remove_if(cliext::binder2nd<cliext::not_equal_to<wchar_t> >(
        cliext::not_equal_to<wchar_t>(), L'b'));
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
a b b b c
a b b b c
b b b

list::rend (STL/CLR)

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

Синтаксис

reverse_iterator rend();

Замечания

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

Пример

// cliext_list_rend.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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::list<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

list::resize (STL/CLR)

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

Синтаксис

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

Параметры

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

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

Замечания

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

Пример

// cliext_list_resize.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
// construct an empty container and pad with default values
    cliext::list<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

list::reverse (STL/CLR)

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

Синтаксис

void reverse();

Замечания

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

Пример

// cliext_list_reverse.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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();

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

list::reverse_iterator (STL/CLR)

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

Синтаксис

typedef T3 reverse_iterator;

Замечания

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

Пример

// cliext_list_reverse_iterator.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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::list<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

list::size (STL/CLR)

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

Синтаксис

size_type size();

Замечания

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

Пример

// cliext_list_size.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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

list::size_type (STL/CLR)

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

Синтаксис

typedef int size_type;

Замечания

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

Пример

// cliext_list_size_type.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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::list<wchar_t>::size_type diff = 0;
    for (cliext::list<wchar_t>::iterator it = c1.begin();
        it != c1.end(); ++it)
        ++diff;
    System::Console::WriteLine("end()-begin() = {0}", diff);
    return (0);
    }
a b c
end()-begin() = 3

list::sort (STL/CLR)

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

Синтаксис

void sort();
template<typename Pred2>
    void sort(Pred2 pred);

Параметры

Пред
Сравнение пар элементов.

Замечания

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

Вторая функция-член ведет себя так же, как и первая, за исключением того, что последовательность упорядочена pred -- pred(X, Y) значением false для любого элемента, следующего за элементом X Y в результирующей последовательности. Он используется для сортировки последовательности в порядке, указанном функцией предиката или делегатом.

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

Пример

// cliext_list_sort.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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();

    // sort descending and redisplay
    c1.sort(cliext::greater<wchar_t>());
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

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

list::splice (STL/CLR)

Переключение связей между узлами.

Синтаксис

void splice(iterator where, list<Value>% right);
void splice(iterator where, list<Value>% right,
    iterator first);
void splice(iterator where, list<Value>% right,
    iterator first, iterator last);

Параметры

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

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

right
Контейнер для splice из.

where
Место в контейнере для splice до.

Замечания

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

Вторая функция-член удаляет элемент, на который указывает первый элемент в последовательности, управляемой правой стороны, и вставляет его перед элементом в управляемой последовательности, на которую указывает место. (If where == first || where == ++first, нет изменений.) Вы используете его для добавления одного элемента одного списка в другой.

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

Пример

// cliext_list_splice.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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();

    // splice to a new list
    cliext::list<wchar_t> c2;
    c2.splice(c2.begin(), c1);
    System::Console::WriteLine("c1.size() = {0}", c1.size());
    for each (wchar_t elem in c2)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // return one element
    c1.splice(c1.end(), c2, c2.begin());
    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 remaining elements
    c1.splice(c1.begin(), c2, c2.begin(), c2.end());
    for each (wchar_t elem in c1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    System::Console::WriteLine("c2.size() = {0}", c2.size());
    return (0);
    }
a b c
c1.size() = 0
a b c
a
b c
b c a
c2.size() = 0

list::swap (STL/CLR)

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

Синтаксис

void swap(list<Value>% right);

Параметры

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

Замечания

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

Пример

// cliext_list_swap.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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::list<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

list::to_array (STL/CLR)

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

Синтаксис

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

Замечания

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

Пример

// cliext_list_to_array.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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

list::unique (STL/CLR)

Удаляет смежные элементы, которые прошли заданный тест.

Синтаксис

void unique();
template<typename Pred2>
    void unique(Pred2 pred);

Параметры

Пред
Сравнение пар элементов.

Замечания

Первая функция-член удаляет из управляемой последовательности (удаляет) каждый элемент, который сравнивает его предыдущий элемент, если элемент X предшествует элементу Y , а X == Yфункция-член удаляет Y. Вы используете его для удаления всех, кроме одной копии каждого подсебления смежных элементов, которые сравнивают равные. Обратите внимание, что если упорядочена контролируемая последовательность, например путем вызова list::sort (STL/CLR),() функция-член оставляет только элементы с уникальными значениями. (Поэтому они так и называются.)

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

Пример

// cliext_list_unique.cpp
// compile with: /clr
#include <cliext/list>

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

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

    // display contents after unique
    cliext::list<wchar_t> c2(c1);
    c2.unique();
    for each (wchar_t elem in c2)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // display contents after unique(not_equal_to)
    c2 = c1;
    c2.unique(cliext::not_equal_to<wchar_t>());
    for each (wchar_t elem in c2)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
a a b c
a b c
a a

list::value_type (STL/CLR)

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

Синтаксис

typedef Value value_type;

Замечания

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

Пример

// cliext_list_value_type.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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::list<wchar_t>::iterator it = c1.begin();
        it != c1.end(); ++it)
        {   // store element in value_type object
        cliext::list<wchar_t>::value_type val = *it;

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

operator!= (list) (STL/CLR)

Список не равного сравнения.

Синтаксис

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

Параметры

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

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

Замечания

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

Пример

// cliext_list_operator_ne.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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::list<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< (список) (STL/CLR)

Список меньше сравнения.

Синтаксис

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

Параметры

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

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

Замечания

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

Пример

// cliext_list_operator_lt.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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::list<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<= (список) (STL/CLR)

Список меньше или равного сравнения.

Синтаксис

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

Параметры

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

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

Замечания

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

Пример

// cliext_list_operator_le.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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::list<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== (list) (STL/CLR)

Список равных сравнений.

Синтаксис

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

Параметры

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

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

Замечания

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

Пример

// cliext_list_operator_eq.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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::list<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> (список) (STL/CLR)

Список больше, чем сравнение.

Синтаксис

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

Параметры

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

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

Замечания

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

Пример

// cliext_list_operator_gt.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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::list<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>= (список) (STL/CLR)

Список больше или равного сравнения.

Синтаксис

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

Параметры

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

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

Замечания

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

Пример

// cliext_list_operator_ge.cpp
// compile with: /clr
#include <cliext/list>

int main()
    {
    cliext::list<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::list<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