Программирование >>  Расширенная версия языка c++ 

1 ... 142 143 144 [ 145 ] 146 147 148 ... 227


return 0;

После выполнения программы на экране появится следующее:

Размер прямого списка =10 Содержимое прямого списка: abcdefghij

Размер обратного списка = 10

Содержимое обратного списка: jihgfedcba ; . -

В данной программе реверс списка 1st достигается следующим образом: элементы поочередно извлекаются из начала списка 1st и размешаются в начале списка revlst. Таким образом в списке revlst реализуется обратный порядок расположения элементов.

4. Вызвав функцию-член вы можете отсортировать список. В следующей

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

Сортировка списка ♦ include <iostreara> ♦include <list> ♦include <cstdlib> using namespace std;

int mainO

list<char> 1st;

int i ;

заполнение списка счайны символам

for(i=0; i<10; i++) 1st .push back( A + (rand( ) %26) ) ;

cou-: Исходное содержимое: ; list<char>: ; iterator p - Ist.beginO; while {p != 1st. endO ) {

cout *p;

P++;

cout endl;

сортировка списка IsL.aort() ;

cou< Отсортированное содержимое:

p = Ist.beginO ; > .

while (p != 1st. end 0 ) { cout *p;

P++; . , . , ,



442 . . Самоучитель . С++

return 0; /

После выполнения программы на экране появится следующее:

Исходное содержимое : PHQGHUMEAY

Отсортированное содержое: AEGHHMPQUY

5. Отсортированный список можно слить с другим. В результате будет получен новый отсортированный список с содержимым, состоящим из содержимого обоих исходных списков. Новый список остается в вызывающем списке, а второй список оказывается пустым. Ниже представлен пример адния двух списков. В первом находятся символы ACEGI, а во втором FHJ. После слияния мы получим последовательность ABCDEFGHIJ. -.

Слияние двух списков

#include <iostrGam>

# include <list> using namespace std;

int main ( ) {

list<char> Istl, lst2;

int i;

for (1=0; i<10; i+=2) Istl .push back ( A+ i) ; for(i=l; i<ll; i+=2) lst2.push back( A + i) ;

cou << Содержое первого списка : ; list<char>: : iterator p = Istl, begin () ,-while(p != Istl.endO ) (

cout P++;

cout endl;

cou Содержое второго списка: ; p

while (p ! endO) {

cout

P++;

cout endl;

Слияние двух списков Istl.merge(lst2); mptyO )

cou Теперь второй список пуст\п ;



После выполнения программы на экране появится следующее:

Содержое первого списка: ACEGI Содержое второго списка: bdfhj

Теперь второй список ст

Содержое первого списка после слияния: .

ABCDijPGHXJ

6. В следующем примере список используется для хранения объектов типа Project. Project - это класс, щью которого организуется управление программными проектами. Обратите внимание, что для объектов типа Project перегружаются операторы <, >, и Перегрузки этих операторов требует компилятор Microsoft Visual С++ 5. (Именно этот компилятор использовался при отладке примеров данной главы.) Для других компиляторов может потребоваться перегрузить какие-либо дополнительные операторы. В библиотеке стандартных шаблонов с помощью указанных оператор-функций сравниваются объекты, хранящиеся в контейнере. Хотя список не является контейнером с упорядоченным хранением элементов, тем не менее и здесь при поиске, сортировке или слиянии элементы приходится сравнивать.

#include <iostrearo> ♦include <list> finclude <cstring> using namespace std;

class Project { public:

char name [40];

int days to completion; f

Project 0 { =.. -

strcpy (name, ) ; ......

days to completion = 0;

Project (char *n, int d) { strcpy(name, n) ;

= d;

cou Содержимое первого списка после слияния: \п ;

р = Istl.begin();

while (р != Istl. end О ) {

cout *p;

p4-+;

return 0; ....



1 ... 142 143 144 [ 145 ] 146 147 148 ... 227

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика