![]() |
|
Программирование >> Расширенная версия языка c++
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; ....
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |