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

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

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

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

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

гпх таз п() ( чессог<зпс> ч; чесгох<зпх>зззхехасог 1гхз зпх 1; гох(1=0з 1<5( 1+>) ч.рави Ьас)с(з.)з сонг « "Исходный иассивз зхт = ч.Ьедвп()з ыи11е(1сх ! = ч. епс)() ) соус « *ззст++ « соих «егк)1з 1гх =- ч.Ьед1п()з вгх += 2з // Осыпка яа элемент 2 // Оседаем итератор вставки, ссылаоаийся яа элемент 2. зпветс 1сехасох<чессох<1пс» з з.сх(ч, всх.)з // Происходит вставка, а ие замена. >1 1хх++ = 100( *з 1хт+> = 200; соцс « "массив посззе вставки: 1сг = ч.Ьедзо()з иЬ11е(ххт != ч.епп()) соих « *1хх+> « хесихп О," Результаты работы этой программы представлены цижс.

1 Исходный массив: 0 1 2 3 4 массив послс вставкиз 0 1 100 200 2 3 4 Если ли бы лля присвоения элсмснтов !ОО и 200 программа использовала обычный итератор, соответствующие элсмезпы в исходном содержании массива были бы перс- записаны. Работа итсраторов, описанных классами Ьас)с 1пветс хсетасохи атопс 1пветс асетасот, ошювана на тсх жс принципах. Класс Ьас1с ~паег1 Нега1ог Класс Ьас)с 1пветт асетатог ПОЛДсРживает работу итсраторов вывода, вставляющих объекты в конец контейнера с помощью Функции равЬ Ьас)с(). Его шаблонное определение выглядит следующим образом.

1 сеязр1асе <с1авв Солт> с1авв Ьас)с зпвегс хсехасотз роЬ)вс 1хетахох<оцхрых 1хегахог Сад, чохс(, чо1с(, чо1<(, чо1с)> Здесь параметр сопт — это тип контейнера, для которого предназначен итсратор. Класс Ьас)с апветс асетасот имеет слсдузоший конструктор. а ехр11с1С Ьасй хпвегс(сопг Гыяг) Здесь параметр сл/ представляет собой контейнер, для которого предназначен итера- тор. Все вставки выполняются в концс контейнера. Глава 35. Стандартные итераторы, распределители памяти и функторы В классе Ьао)< 1пвеге 1еегаеог определены следующие операторы; "=", "*", "++". Указатель па коптеииер хранится в защищенной псремеш)ой ооаеа1пег. Кроме того, в классе определена функция ьао)х хпвехеег(), создающая объект класса Ьао)т 1пвехе 1еегагох.

Ее спецификация представлена ииже. $ еетр1асе <с1авв сопс> ьаск Хпвехс Хсехахох<сопс> ьаск Хпвехсех(сопс вон); Класс 1гол1 ваег1 Нега1ог Класс кгоае хпвеге 1еегагох полдерживаст работу итсраторов вывода, вставляющих объекты в начало контейнера с помощью функции ривЬ Ягопх(), Его шаблонное опрслслспис выглядит так. сетр1аее <с1авв сопс> с1авв бгопс 1овехх ххехасох: роЫ1с Ххегаеох<оисрие 1сехасох еа9, уо1с), ео1с), еа1(), уогг)> Здесь параметр сове — это тип ко)псщ)сра, лля которого предназначен итератор.

Класс лгопе 1авеге 1еегаеог имеет следу(а(лий конструктор. Б ехр11с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гегасог определен защи[цснный член сиггепг, представляющий собой итсратор. ссылающийся на текущую позицию. Кроме того, в классе ге»гегвя 1сегасог опрелслена функция )»аве(), спецификация которой имеет следующий вид.

Г) Хсех )»аяе() сопла; Она возвращает итсратор, ссылающийся на текущую позицию. Класс Ыгеат Нега1ог Класс 1всгеаа 1сегасог поллсрживаст работу потоковых итсраторов ввода. Его цзаблоннос определение выл лялит слсдующим образом. Се»»р1ахе <с1авя Т, с1аяя С)»ахтуре, с1аяя Лххх = снах Схатхя<пбахтуре>, с1аяв рьвх = рххй1гб С> с1аяв Тяхгея»п 1хехахох: ри)»11с 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иг)е <1ояххеая> $1пс1п([е <асехасох> пя1пд пап~еярасе ясг)г тпх яа»п[) 1ясхеага 1сехасох<сьаг> 1п 1с(с1п) с)о ( сопх « *1п 1С++» ) и)»11е (*1п »а != '.'); гехцхп 0» ) Глава 36. Стандартные итераторы, распределители памяти и функторы Класс [Б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авв свкхеапт 1кекакскт риЫ1с 1хетахох<оисрих 1хекахох пад, ттоЫ, иоЫ, иоЫ, иоЫ> Здесь параметр т — это тип передаваемых данных, а параметр сьагтуре является символьным типом (сьаг или мсьаг г), которым оперирует поток.

Класс овггеаа вхагахог имсст следующие конструкторы. | овххеапт Тхекакок(овхгеаа суре амгеат)т овххеатп Тхегахок(овхгеатп суре ьмгеат, сапах спахтуре "т(е)тт) т овккеат 1кекакок(сипак овхкеаа 1хехахсх<Т, СЬакТуре, Аккх> ЬаЫ Первый создаст итсратор, ссылающийся на поток зггеат. Тип овьгеап суре определяется опсратором сурет[ел и задает тип потока вывода. Второй конструктор создаст итсратор, ссылающийся на поток з(геат, используя в качестве разделителя символ Часть йй Библиотека стандартных классов Неlип, который записывается в поток после каждой операпии вывода.

Третий вил конструктора созлает коп)ию объекта класса онскена ).сегасог. В классе овсгеат (.сагасох опрслелсны следующие операторы: "=", """, "++" Рассмотрим нсбольшу»о программу, иллюстрирующую работу класса овскеюа 1сегасог. /»' Применение класса овхкеам 1хегахок. $1сс1иг)е <1овхгеам> ятсс1ис)е <»Сегахох> ив1пд саа»еврасе асб» 1сс та».а() овхкеат 1кехаког<снах» осс 1с(сагах) *оих ».С = 'Х' оык 1С++» *оис 1с = 'у' оис 1сх ь» *омс».с сиаг век() = Итераторы — ионный ь»нструмент. тп"» снах "р = вхх» ИЫ1е(*р) *оох 1С++ = *р++» овхкеаг» 1хекахок<с)омЬ1е> оох с)оиЬ1е 1С(соих)» *оок с)ооЬ1е »С = 127.23» огас с)оиЫе 1с++» *оак с)омЫе хх .—. -102.7» хесохс 0; ) Результаты раб(вы зтои программы привелены ниже.

ХХ Итераторы- моцньгй инструмент. 187.23-102.7 Класс оаЬгеа)т)Ьот йега1ог Класс овсгевва»мя хсекасог поддерживает работу потоковых итсраторов вывода символов. Его шаблонное определение выглядит так. | сел»р1асе <с1авв сиактуре, с1авв Асск = сьак сха?св<сьахтуре» с1авв овскеатлЬиг 1секасок» риЫ1с ксекасог<оасрас,1секасог сад, чоЫ, чоЫ, чоЫ, чоЫ> Здесь параметр сьагтуре является символьным типом (сьаг или мсьаг с),.которым оперирует поток.

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

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

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

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