►Контейнер list...320

We use cookies. Read the Privacy and Cookie Policy

STL предоставляет программисту массу контейнеров — гораздо больше, чем я могу описать в одной главе. Здесь я попытаюсь хотя бы вкратце познакомить вас с двумя из них.

Контейнер STL list хранит объекты связанными наподобие блоков детского конструктора. Объекты могут быть связаны в любом порядке, что делает данный контейнер идеальным для вставки, сортировки, объединения списков и прочих операций над объектами. Приведённая далее программа демонстрирует использование  list для сортировки набора имён .

    /* STLList — использование контейнера list для */

    /*            ввода и сортировки строк */

    #include <list>

    #include <string>

    #include <cstdio>

    #include <cstdlib>

    #include <iostream>

    /* Объявление списка строк */

    using namespace std ;

    list <string> names ;

    int main( int argc , char* pArgs[ ] )

    {

        setlocale ( LC_ALL , ".1251" ) ; /* печать кириллицы */

        /* Ввод строк имён */

        cout << "Введите имя ( или х для завершения )"

             << endl ;

        while ( true )

        {

            string name ;

            cin >> name ;

            if ( ( name.compare( "x" ) == 0 ) ||

                 ( name.compare( "X" ) == 0 ) )

            {

                break ;

            }

            names.push_back( name ) ;

        }

        /* Сортируем список */

        names.sort( ) ;

        /* Выводим отсортированный список */

        /* Выводим имена, пока список не опустеет */

        cout << " Отсортированный список:" << endl ;

        while ( !names.empty( ) )

        {

            /* Первое имя в списке */

            string name = names.front( ) ;

            cout << name << endl ;

            /* Удаляем это имя из списка */

            names.pop_front( ) ;

        }

        /* Пауза для того, чтобы посмотреть на результат работы программы */

        system( "PAUSE" ) ; return 0 ;

    }

_________________

320 стр. Часть 5. Полезные особенности

В этом примере определена переменная names, являющаяся списком объектов string. Программа начинает работу с чтения вводимого пользователем списка имён . Каждое введённое имя добавляется к концу списка с помощью метода push_back( ). Цикл завершается, когда пользователь вводит имя "х". Затем список имён сортируется при помощи метода sort( ) .

Программа выводит отсортированный список имён , удаляя объекты с начала списка до тех пор, пока он не станет пустым.

Вот пример вывода данной программы.

    Введите имя ( или х для завершения )

    Igor

    Ira

    Anton

    х

    Отсортированный список:

    Anton

    Igor

    Ira

    Press any key to continue...

Контейнер list предоставляет программисту массу различных возможностей, простейшие из которых — insert, swap и erase. Контейнер также позволяет программисту осуществлять итерации по списку с выполнением пользовательской функции над каждым элементом списка.

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