Читать «С++ для "чайников" .» онлайн - страница 217

Стефан Рэнди Дэвис

«Тип size_t определён в заголовочных файлах STL как целое число, которое в состоянии работать с массивом максимально допустимого на вашем компьютере размера. Обычно это тип long. Использование типа size_t связано с вопросами переносимости исходного кода между различными программно-аппаратными платформами. Visual С++ .NET сгенерирует предупреждение, если вместо size_t вы используете int

[]

Функция insertPhrase( ) использует метод find( ) для поиска точки вставки в строку, после чего метод erase( ) удаляет метку вставки <ip> из строки, а метод insert( ) вставляет новую строку в средину старой.

Вот как выглядит вывод данной программы:

    string1 + string2 = string1 string2

    <The phrase> минус пробелы = <Thephrase>

    Stephen <ip> Davis  ->  Stephen Randall Davis

    Press any key to continue...

_________________

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

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

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 << "\nОтсортированный список:" << endl ;

        while ( !names.empty( ) )

        {

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

            string name = names.front( ) ;

            cout << name << endl ;

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

            names.pop_front( ) ;

        }

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

        system( "PAUSE" ) ; return 0 ;

    }

_________________

320 стр. . Полезные особенности

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