Читаем С++ для "чайников" . полностью

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

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

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

    #include

    #include

    #include

    #include

    #include

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

    using namespace std ;

    list 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 << "\nОтсортированный список:" << 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-ому элементу.

<p id="chapter28.3"><strong>►Итераторы...321</strong></p>

В представленной в предыдущем разделе программе для прохода по списку использован деструктивный метод: метод pop_front( ) позволяет пользователю пройти по всему списку, удаляя всякий раз первый объект в списке.

Проход по массиву обычно осуществляется программистом с использованием индекса массива — но такой способ в случае списка неприменим. Можно представить решение, основанное на использовании методов типа getFirst( ) и getNext( ), однако разработчики STL хотели обеспечить обобщённый метод прохода по элементам контейнера, который работал бы для любого вида контейнера. Этой цели служат итераторы STL.

Итератор представляет собой объект, который указывает на объекты, содержащиеся в контейнере. В общем случае итераторы поддерживают следующие функции. 

■■■

■ Класс может вернуть итератор, который указывает на первый член коллекции.

■ Итератор можно переместить от одного элемента к следующему.

■ Программа может обратиться к элементу, на который указывает итератор.

■■■

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

_________________

321 стр. Глава 28. Стандартная библиотека шаблонов

Перейти на страницу:

Все книги серии Для чайников

Похожие книги

Разработка приложений в среде Linux. Второе издание
Разработка приложений в среде Linux. Второе издание

Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет СЃРѕР±РѕР№ отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из РґСЂСѓРіРёС… операционных систем. РџРѕРґСЂРѕР±но рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование СЃРІРѕР±одно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Р

Майкл К. Джонсон , Эрик В. Троан

Программирование, программы, базы данных
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript

Данная книга посвящена программированию игр с помощью ActionScript. Здесь вы найдете подробные указания, необходимые для создания самых разных игр – аркад, головоломок, загадок и даже игровых автоматов. В тексте приведены исходные коды программ и детальные, доступно изложенные инструкции. Базовые принципы программирования ActionScript рассматриваются на примере игр, однако вы без труда сможете применить полученные знания и для разработки неигровых проектов, таких как Web-дизайн и реклама. Рекомендации Гэри Розенцвейга помогут вам не только придумывать занимательные игры и размещать их на Web-сайте, но и оптимизировать скорость их работы, а также защищать свои творения от несанкционированного копирования. Представленный в книге код несложно изменить для использования в других программах.Книга предназначена для широкого круга читателей – создателей анимационных роликов, художников-оформителей, программистов и разработчиков Web-сайтов. Издание может также выступать в качестве практического пособия по изучению ActionScript.

Гэри Розенцвейг

Программирование, программы, базы данных / Программирование / Книги по IT
Язык программирования Euphoria. Справочное руководство
Язык программирования Euphoria. Справочное руководство

Euphoria (юфо'ри, также рус. эйфори'я, ра'дость) — язык программирования, созданный Робертом Крейгом (Rapid Deployment Software) в Канаде, Торонто. Название Euphoria — это акроним для «End-User Programming with Hierarchical Objects for Robust Interpreted Applications».Euphoria — интерпретируемый императивный язык высокого уровня общего назначения. C помощью транслятора из исходного кода на Euphoria может быть сгенерирован исходный код на языке Си, который в свою очередь может быть скомпилирован в исполнияемый файл или динамическую библиотеку при помощи таких компиляторов, как GCC, OpenWatcom и др. Программа Euphoria также может быть «связана» с интерпретатором для получения самостоятельного исполняемого файла. Поддерживается несколько GUI-библиотек, включая Win32lib и оберток для wxWidgets, GTK+ и IUP. Euphoria имеет встроенную простую систему баз данных и обертки для работы с другими типам баз данных.[Материал из Википедии]

Коллектив авторов

Программирование, программы, базы данных