Главная » Просмотр файлов » Г. Шилдт - Полный справочник по C++

Г. Шилдт - Полный справочник по C++ (1109478), страница 94

Файл №1109478 Г. Шилдт - Полный справочник по C++ (Г. Шилдт - Полный справочник по C++) 94 страницаГ. Шилдт - Полный справочник по C++ (1109478) страница 942019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

В1пс1ис[е <уоэегеазк> Ззпс1ис)е <чесеог> В1пс1ис)е <ссеуре> иэ1по пашеэрасе эсс[з 1пс ша1п[) ( чессот<спат> ч[10); // создаем вектор из 10 элементов. 1пс 1з // Выводим на экран исходный размер вектора ч соие « "Размер = " « ч.эьте<) « ел<[1[ // Присваиваем элементам вектора определенные значения. бог<1=0[ з.<10[ з.++) ч[з.) = з.

+ 'а'з // Выводим на экран содержимое вектора. соил « Текущее содержимоез[п"з Кот(з=бз 1<ч.эйке()з з++) соис « ч[з.) « соил « "[п(п" з соне « "Расширенный вектор<с"1 /* Эаписьзэаем э кснеи вектора новые элементы, при этом Часть П. Язык С++ гвквгвпсв срвтвког [) <взте курв з) сопаез сосне тееегепсе орегвеог () (в)лв суре з1[ чо1П рор Ьас[с() з чо1п рпвь ьас[с(сопвс т еьв!) з в1кв Фура вьтв[) сопвЕЗ Возвращает итератор, установленный на первый элемент вектора Удаляет элемент, на который ссылается итератор с Возвращает итератор, установленный на элемент, следуккций за удаленным Удаляет элементы из диапазона, заданного итераторами з[ал и алб.

Возвращает итератор. установленный на элемент, следующий за последним удаленным Возвращает ссылку на первый элемент вектора Вставляет элемент ча1 перед элементом, на которыи сеьщаатся итератср з. Возвращает итератор, установленный на элемент ьв[ Вставляет перед элементом, на который ссылается итератор 1 последсаательнсють элементов, заданную итератсраьм з[шчи ел[[ Возвращает ссылку на элемент, заданный итератором 1 Возвращает текущее количество элементов вектора его размер увеличивается.

*/ Тсг(х=Оз 1<10з 1++) ъ.ризЬ Ьаск(1 + 10 + 'а') // Выводим на экран текущий размер вектора ч. ссис « 'Новый размер = " « ч.ззее() « еп((1/ // Выводим на экран содержимое вектора. ссис « "текущее ссдержимсез 1п"з Тсг(1=0з 1<ч.з1ае()з 1++) ссис « ч[1] « соис « "хп1п"з // Изменяем содержимое вектора. (сг(зяОз з<ъ'.зз.ае()з 1++) ч[1] - "ссиррег(ч11])з ссис « "модифицированное содержимсез 1п"з (ог(1=0/ 1<ч.алле()з з+с) ссис « ч[1] « соис « епд1/ гесигп Оз Результаты работы этой программы приведены ниже. Размер = 10 Текущее содержимое: а Ь с Н е Т О Ь 1 Расщиренный вектор Новый размер = 20 Текущее ссдержимсез а Ь с Н е Т н Ь 1 б )< 1 щ и с р <) г а Модифицированное ссдержимоез А В С Р Е Р С Н 1 Ю К В М Н О Р () К Я Т Рассмотрим эту программу внимательнее.

В функции зааТпО создается вектор символов ч, длина которого равна 10. Этот факт подтверждается вызовом функции- члена а1ве(). Затем 1О элемегпов вектора ч инициализируются символами, начиная с буквы а и заяершая буквой ~. Обратите внимание на то, что при этом применяется стандартная индексация. Затем с помощью функции риаЬ Ьасн() в конец вектора ч добавляется еще 10 элементов. Для того чтобы записать зги 10 элементов, размер вектора ч увеличивается. Как свидетельствуют результаты работы программы, после этой операции размер массива становится равным 20. В итоге значения элементов вектора ч изменяются, причем для доступа к ним используется стандартная индексация, В этой программе есть еще один интересный момент.

Обратите внимание на то, что циклы, отображающие на экране содержимое массива ч, используют в качестве верхнего прелела значение функции ч.а1аа(). Одно из преимушеств векторов над обычными массивами заключается в том, что текущий размер вектора можно определить в любой момент. Легко убедиться, что это свойство оказывается довольно полезным во многих ситуациях. Доступ к элементам вектора с помощью итератора Как известно, массивы и указатели тесно связаны между собой.

Доступ к элелзентам массива осуществляется либо через указатель, либо по индексу. В библиотеке БТ]. наблюдается аналогичная ситуация, только роли массивов и указателей играют векторы и итераторы. Доступ к элементам вектора обеспечивается по индексу либо через итератор. Рассмотрим соответствующий прилзер. Глава 24.

Введение в стандартную библиотеку шаблонов // доступ к элементам вектора с помощью итератора. афпс1иг)е <фовсгеащ> аьпс1пде <чесхог> $1пс1пде <ссеуре> овтпд пащеврасе вгг)г ?пе вази() ( чесеог<сиаг ч(10)з // Создаем вектор из 10 элементов. чесгог<снах>ззьпехаеог рз // создаем итератор. зпе з.з // Присваиваем элементам вектора определенные значения. р = ч.Ьед1п(); 1 = Оз ип?1е(р != ч.епг)()) *р = 1 + 'а*з )з++ з 1++; ) // Выводим содержимое вектора на экран. соне « "Исходное содержимоез)п"з р = ч.

Ьедз.п ( ) г мб?1е(р != ч.еп<)() ) соне « *р « р++' ) соне « ")п1п" г // Изменяем содержимое вектора. р = ч.Ьедап()з мп?1е[р )=- ч.еп<?О ) ( *р = еоиррег(*р)з р*+ ) // Выводим содержимое вектора на экран. попс « "Модифицированное содержимое1п"/ р = ъ.Ьедзп() г ьи?1е(р != ч.еп<)О ) [ сонг « *р « р++з соие « епг)1з хееогп Оз Результаты работы этой программы приведены ниже. Исходное содержимоез а Ь с <) е Е д Ь 1 1 Модифидированное содержимоез А В С П Е Р С Н 1 Обратите внимание на то, как объявлен итератор р. Тип 1еегаеог определен в контейнерном классе. Следовательно, чтобы получить итератор для элементов конкрет- Часть Н. Язык С++ ного контейнера„необходимо использовлзь объявление, аналогичное показанному в примере: просто указывать имя контейнера и спецификатор деегаеог.

В данной программе итератор р установлен в начало вектора. Для этого используется функция Ьендп(). Зтэ процедура аналогична применению указателей для доступа к элементам массива. Для того чтобы распознать конец вектора, вызывается функщи епо(). Эта функция возвращает итератор„установленный на элемент, следующий за последним элементом вектора. Таким образом„если итератор р равен значению ч.езжт(), значит, обнаружен конец векзсра. Вставка и удаление элементов вектора Итак, мы уже знаем, как вставить новые значения в конец вектора. Теперь посмотрим, как их записать в середину. Для этого применяется функция 1пвеге(). удалить элементы из вектора можно с помощью функции агаве(). рассмотрим программу, иллюстрирующую применение функций 1пвеге() и агаве().

// Иллюстрация функций ъпвегс и егаве. Втпс1цг)е <ьовегешп> М1пс1це)е <чессог> цвтпд паюеэрасе эс<)з з.пс па1п() ( чесеог<снаг> ч(10); чессог<снаг> ч2з снаг нег[] = "<чесеог>"з 1пс зз // Инициализируем вектор ч. тог(1=0з 1<10; 1++) ч[1) - "1 + 'а' // Копируем символы иэ строки всг в вектор ч2. Еог(ъ=оз всг[к]з з++) ч2.рцвн Ьас)с(всг[з.))з // Выводим на экран исходное содержимое вектора соцс « "Исходное содержимое вектора чз1п"з гог(1=0„. з<ч.въле()з 1++) соцс « ч[].] « соцс « ")п1п"з зессог<сьаг>з.1еегасог р = ч.Ьеоуп()з р += 2з // Устанавливаем итератор на третий элемент. // Вставляем 10 символов 'Х' в вектор ч. ч.тпэеге(р, 10, "х')з // Выводим иа экран содержимое вектора после вставки. соце « "Размер вектора после вставки символов 'Х' « ч.в1ке() « епд1з соцс « кдодержимое вектора ч госле вставки:'зп'з гог(1=0; 1<ч.въее()з 1++) соцс « ч[).] « соцс « "1п'зп" з // Удаляем эти элементы.

р = ч.Ьедтп () з р += 2/ // Устанавливаем итератор на третий элемент. ч.егаве(р, р+10)з // Удаляем следующие 10 элементов. // Выводим на экран содержимое вектора после удаления. Глава 24. Введение в стандартную библиотеку шаблонов соне « "Размер вектора ч после удаления = « ч.зьге[) « епб1) соус « "Содержимое вектора ч после удаленияг хо"г гог(1=0; 1<ч.вьге(]; 1++) сопс « ч[1) « " "р соис « "1Мп") // Вставка вектора ч2 в вектор ч. ч.зпвегс(р, ч2.Ьедьп(), ч2.епбО )г сове « "Размер вектора ч после вставки вектора ч2 сонг « ч.в№ге() « епд1; соус « "Содержимое вектора ч после вставки> хп") гог(1=ОЙ 1<ч.вгае(]) 1++) соис « ч[1) « " "р сопс « епб1) геспгп Оу Эта программа выводит на экран следующие строки.

Исходное содержимое вектора ч: а Ь с с) е Г д Ь 1 Размер вектора после вставки символов 'Х' = 20 Содержимое вектора ч после вставки: а Ь Х Х Х Х Х Х Х Х Х Х с б е Г д Ь [ Размер вектора ч после удаления = 10 Содержимое вектора ч после удаления: а Ь с б е № д Ь Ь 2 Размер вектора ч после вставки вектора ч2 = 18 Содержимое вектора ч после вставки: а Ь < Ч е с с о г > с с] е г д Ь [ Зта программа демонстрирует применение двух видов функции 1паеге() . В первом случае она вставляет в вектор 10 символов 'х'. Во втором — вставляет в вектор ч содержимое вектора чл. Вторая форма функции Апвеге() намного интереснее. Она имеет три аргумента, которые являются итераторами. Первый из них залает позицию, с которой начинается вставка элементов в контейнер.

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

Рассмотрим пример, в котором вектор хранит данные о температуре воздуха, измеренной в течение недели. Обратите внимание на то, что класс г)а11утеа(з имеет конструктор по умолчанию, а также перегруженные версии операторов "<" и "= ". Помните, что в зависимости от конкретной реализации библиотеки ЯЧ. перегрузка операторов сравнения может быль необязательной. // Вектор, содержаний объекты класса. №ьпс1ибе <1овегеат> №ьпс1пбе <чессог> №ьпс1пбе <све<)1й» пвлпд патеврасе всб) с1азв Ва11утегпр Ьпс се)ар) Часть 11. язык С++ роЬ11с: Ра11утевр() ( Совр = 0; ) Ра11уТевр(апг х) ( Севр = х; ) Ра11уТевр Ьорегагог=(апг х) Севр = х; гегигп *СЬТа; ) с)оиЬ1е дег Севр() ( геспгп Севр; ) ): Ьоо1 орегагог< (Ра11уТевр а, Ра11утевр Ь) ( геспгп а.дес севр() < Ь.дес севрО; ) Ьоо1 орегагог==(Ра11уТевр а, Ра11уТевр Ь) ( гегогп а.дег СеврО == Ь.дет Секр()3 Тпс ва1п(! ( чесоог<Ра11уТевр> ч; ьпт 1; ТОГ(1=0; 1<7; 1<+) ч.ровЬ Ьасн(па11уТевр(50 + гапсЪ()%30)); соус « Температура ло Фаренгейтуь уп"; Тот(1=0; 1<ч.е1ге(); 1++) сонг « ч[1).дес севр() « сонг « еп01; // Преобразование шкалы Фаренгейта в шкалу цельсия.

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

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

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

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