Главная » Просмотр файлов » Г. Шилтд - Самоучитель C++ (DJVU)

Г. Шилтд - Самоучитель C++ (DJVU) (1114955), страница 66

Файл №1114955 Г. Шилтд - Самоучитель C++ (DJVU) (Г. Шилтд - Самоучитель C++ (DJVU)) 66 страницаГ. Шилтд - Самоучитель C++ (DJVU) (1114955) страница 662019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 66)

Цикл завершится, когда итератор р укажет на конец списка. 3. Поскольку список является двунаправленным, размещать элементы в нем можно как с начала списка, так и с его конца. В следующей программе создается два списка, причем во втором списке организуется обратный первому порядок расположения элементов.

// Элементы можно размещать не только начиная с начала списка, // но также и начиная с его конца ()1пс1ис(е <1оясгеащ> ()1пс1пс(е <!1ят> из|па патпеярасе вЫ; 1п( паьп ( 7 ( 11яс<с)тат> 1ас; 11яс<сЬаг> ге~1яс; 1пс Гог(1=0; 1<10; 1++) 1я~.рпвЬ Ьаск('А' + 1) сопл « "Размер прямого списка = " « 1вс.вазе () « епб1; сопв « "Содержимое прямого сгллска: 11ас<спаг>;:1сегаког р; Удаление элементов из первого списка // и размещение их в обратном порядке во втором списке иЬ11е (! 1вс .етпрсу() ) ( р = 1аС.Ьеф.п(); сопл « р; 1вс.рор Ггопс()! ге~г1вс.риаЬ Ггопс(*р): 7 сопс «епс(1; сопл « "Размер обратного списка = сопл С< геч1ас.в1ае() « епб1; сопб « "Содержимое обратного списка: ") р геу1вс.Ьергп(); хЬ11е(р != гет1вс.епо()) сопс « "р; р++~ 441 Глава 14.

Библиотека стандартнык шаблонов ге'сига О; После выполнения программы на экране появится следующее: Размер прямого списка = 10 Содержимое прямого списка: >гвсокрйнт,т Размер обратного списка = 10 Содержимое обратного списка: гтнс~косв>г В данной программе реверс списка 1з( достигается следующим образом: элементы поочередно извлекаются из начала списка 1а1 и размещаются в начале списка гет1аЬ Таким образом в списке гет!М реализуется обратный порядок расположения элементов.

4. Вызвав функцию-член вог10, вы можете отсортировать список. В следующей программе создается список случайных символов, а затем эти символы сортируются. // Сортировка списка ()1пс1ибе <1оветеаи> ((1пс1в<(е <1(а1> ((1пс1обе <сзМ11Ь> из)пд пагпезрасе зМ; (п( пв1л () 11вс<сйаг> 1вс; з.пл т > // заполнение списка случайными символами Гол(1=0; 1<10; 1++) 1вс.ривЬ Ьас>;( 'А' ~ (кап<)() %26) ); соШ « "Исходное содержимое ..

" т 11в<<сЬат>:: 1сеталОК Р = 1вЬ.Ьедвп(> > иЬ11е (р ! = 1ве, ел~(П ) соне «р' р++; 1 сонс «епс(1; О сортировка списка 1вс аоге()> сопС « "Отсортированное содержимое: р = 1ве.Ьед1д(); нЬ11е (р! = 1ак. елб () > сопв «*р; р+-~-; Самоучитель гевптп 0; После выполнения программы на экране появится следующее: Исходное содержимое: РН()ЙН()МЕАМ Отсортированное содержимое: йЕЙННМРЖт 5. Отсортированный список можно слить с другим. В результате будет получен новый отсортированный список с содержимым, состоящим из содержимого обоих исходных списков. Новый список остается в вызывающем списке, а второй список оказывается пустым. Ниже представлен пример слияния двух списков. В первом находятся символы АСЕС1, а во втором — ВВЕЛ.

После слияния мы получим последовательность АВСРЕгСН1Л. О Слияние двух списков ()1пс1пс(е <1ояетеат> () 1пс1пс)е <11ят > пя1па папзеярасе я1с); ни жа1п ( ) 11яв<снат> 1яс1, 1ят2; гпс тот (1=0р 1<10р 1<=2) 1яс1.риян Ьас)<( 'А'+ 1); йот (1=1; 1<11; 1+=2) 1яе2.рпяЬ Ьас)с( 'и' ж 1) ) сопс « "содержимое первого списка: 11яс<сЬат>:: гсетатот р = 1яс1. Ьедяп ()у н)л11е(р != 1вт1 . ЕПС) О ) ( сонь « "'р; р+ж; соус « еп61; сост « "Содерхсжое второго списка; р = 1яе2.Ьедгп() р иЬ11е(р )= 1ят2.епс)()) сонг « "р; р++г сопв « епс11; Слияние двух списков 1яе1.летие (1яе2); гв (1яе2, евку() ) сост « "Теперь второй список пустХп"; Глава 14, Библиотека 443 стандартных шаблонов сонг сс "Содержимое первого списка после слияния:~п"; р = 1аС1.ЬецьпО; ю)т(1е (р != 1ас1.епс(() ) сопг « *р; р.~ + ге1игп О; После выполнения программы на экране появится следующее: Содержимое первого списка: АСЕС1 Содержимое второго списка: ВПРНТ Теперь второй список пуст Содержимое первого списка после слияния: АВСПЕРСНт,т 6.

В следующем примере список используется для хранения объектов типа Рго)ес1. Рго)ес1 — это класс, с помошью которого организуется управление программными проектами. Обратите внимание, что для объектов типа Рго)ес1 перегружаются операторы <, >, ! и ==. Перегрузки этих операторов требует компилятор М(сгозо(1 Ч(зиа1 С++ 5. 1Именно этот компилятор использовался при отладке примеров данной главы.) Для других компиляторов может потребоваться перегрузить какие-либо дополнительные операторы.

В библиотеке стандартных шаблонов с помощью указанных оператор-функций сравниваются объекты, хранящиеся в контейнере. Хотя список не является контейнером с упорядоченным хранением элементов, тем не менее и здесь при поиске, сортировке или слиянии элементы приходится сравнивать. ()1пс1ис(е <1оасгеатв> ()бпс1пс)е <11вг> ()ьпс1пс(е <свкггпд> пвъпд папеврасе вгб; с1авв Ргобесл риЫ1с: снаг пале [401 с ъпс раув ко сощр1ел"'оп; Р оЗесС() ( вегсру (петле, " с)ауа Со сощр1егьоп =- 0; ) Ргоэесе (спа» *и, гпс с() ( всгсру (пгзае, г.): г(аув со соыр1есьоп = б; Самоучитель С++ чо(й айй йауз(1по 1) ( йауз го соп~р1ег1оп += чо1й звЬ с(ауз(3.пе 1) ( йауз го сотр1ег1оп =- ) Ьоо1 соп~р1еТей() ( гегнгн !йауз ~о сотпр1е~1оп; ) воЫ героге () ( сома « нате « сонг « йауз со сод~р1еа' оп; сонв « " дней до завершения~в"; ьоо1 орегагог<(сопз1 Рхо1есг йа, соняг Ргойесг яь) гегигн а.йауз Ьо сопр1ег1оп к Ь.йауз Ьо сотвр1еЬ1оп; Ьэо1 орега~ог>(сопев Рго.(есг ьа, соняг Ргоз)есг ьЬ) ( гегигп а.йауз ~о сожр1еТРоп > Ь.йауз Ьо сотр1ег1оп; ьоо1 орегагог (сопзг Рго-)есв аа, соняв Рго~есг.

ьЬ) гевнгн а.йауз йо сотр1ег1оп == Ь.йауз Ьо соп~р1ег'оп; ьоо1 орегавог!=(сопят Рго-)есв ьа, соняв Рго1есв аЬ) гевнгн а.йауз го соп~р1егйоп != Ь.йауз го сотр1е~йопр ) 1нв твайт () ( 11яг<Рго-) есг> рго-); рго ). ризЬ Ьас)с(Рго1есе("Разработка компилятора", 35)); рго1,рнзЬ Ьас)с(Рго0ест.(" Разработка электронной таблнцы", 190)); рго ).ризЬ Ьас)с(Рго1ес~("Разработка ятт,", 1000)); 11з~<Рго.)ест>::хЬега~ог р = ртов,Ьед1п(); вывод проектов на экран ыЬ11е (р )= рго1.епй()) р->героге(); р++; Глава 14. Библиотека стандаргныхшаблонов 1! увеличение сроков выполнения первого проекта на 10 дней р = ргоб.Ьедшп<)у р->агЫ о)аув<10)р // последовательное завершение первого проекта Йо р->выЬ г)аув <5): р-)герогг1); ) ъ'Ы1е <<р->сошртееео <) ); гетигп О; После выполнения программы на экране появится следующее: 1.

Поэкспериментируйте с представленными примерами. Попытайтесь делать небольшие изменения в программах и исследуйте результаты. 2. В примере 1 после вывода информации на экран список опустел. В примере 2 вы узнали об одном из способов исследования содержимого списка, при котором он остается неповрежденным. Можете ли вы придумать другой способ просмотреть список, не опустошая его при этом? Продемонстрируйте ваше решение, заменив необходимые инструкции в программе из примера 1. 3.

Отталкиваясь от программы из примера 6, создайте еще один список, в котором представьте следующие проекты: Проект Срок завершения Разработка базы данных Разработка стандартных писем Разработка объектов СО))<) 780 50 300 Разработка Разработка Разработка Разработка Разработка Разработка Разработка Разработка Разработка Разработка Разработка Разработка компилятора: 35 дней до завершения электронной таблицы: 190 дней до завершения ЯТ1.: 1000 дней до завершения компилятора: 40 дней до завершения компилятора: 35 дней до завершения компилятора: 30 дней до завершения компилятора: 25 дней до завершения компилятора: 20 дней до завершения компилятора: 15 дней до завершения компилятора: 10 дней до завершения компилятора: 5 дней до завершения компилятора: 0 дней до завершения Самоучитель С++ После создания второго списка выполните сортировку и затем слияние обо- их списков.

Выведите на экран итоговый результат. 14.5. Ассоциативные списки Класс тар поддерживает ассоциативный контейнер, в котором каждому значению соответствует уникальный ключ. По существу, ключ — это просто имя, которое вы присваиваете значению. После того как значение помещено в контейнер, извлечь его оттуда можно с помошью ключа. Таким образом, в самом общем смысле можно сказать, что ассоциативный список представляет собой список пар ключ/значение.

Преимушество ассоциативных списков состоит в возможности получения значения по данному ключу. Например, используя ассоциативный список, можно хранить имена телефонных абонентов в качестве ключей, а номера телефонов в качестве значений. Ассоциативные контейнеры в программировании становятся все более и более популярными. Как уже упоминалось, в ассоциативном списке можно хранить только уникальные ключи. Дублирования ключей не допускается. Для создания ассоциативного списка с неуникальными ключами используется класс-контейнер пп)П)в)ар.

Ниже представлена спецификация шаблона для класса тар: Ееар1аЕе<а1азз Кеу, с)аяя Т, с)аяя Сокр = 1езз<Кеу>, с1аяя Л))оса(ог = а11осаЕок<т»с1азз гпар Здесь Кеу — это данные типа ключ, Т вЂ” тип данных, предназначенных для хранения (в карте), а Сов)р — функция для сравнения двух ключей, которой по умолчанию является стандартная обьект-функция )еаза. Ключевое слово АПоса(ог задает распределитель памяти (которым по умолчанию является а Носа(ог).

В классе тар определены следуюшие конструкторы: ехр11сгп вар (сопяп с'отр ЙФ ораза ~ Сонр(), сопяп М1осапог яа = А11ооагок() ); юар (сопяя нар<Кеу, Т, Совр, А11оааЕок>йооъекз) ) Ееер1аге<о1азз 1п? Век>нар (Ха1Еек начало, 1п1 Век конец, собес Совр ьз сраан = Ссцар(), сопяс Ы1осяпог йа = А11ооаЕок () ) Первая форма представляет собой конструктор пустого ассоциативного списка. Вторая форма конструктора предназначена для ассоциативного списка из одинаковых элементов, каждый из которых — это обьект.

Характеристики

Тип файла
DJVU-файл
Размер
8,22 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6418
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее