►Контейнер 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 << " Отсортированный список:" << 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-ому элементу.
Больше книг — больше знаний!
Заберите 20% скидку на все книги Литрес с нашим промокодом
ПОЛУЧИТЬ СКИДКУ