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

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

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

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

Возвращается итератор, установленный на искомый элемент. Вторая версия позволяет програмл1исту самостоятельно задавать Функцию сравнения, определяющую критерий поиска. р76 Часть й(. Библиотека стандартных классов теслр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еет еи), хеха)Г, ВхпРхес( р)п); 8 этой главе описываются классы и функции, обеспечивающие работу с итераторами, распределителями памяти и функторами. Эти компоненты являются частью стандартной библиотеки шаблонов. Следует заметить. что эти функции можно примеггять и дги решения друг.их задач. !Й Итераторы Основные типы итераторов Существуют пять лилов итераторов.

Итерапзр Вид доступа Итератор произвольного доступа Хранит и извлекает значения. Обеспечивает произвольный доступ к зпемеитам, Хранит и извлекает значения. Перемещается вперед и назад. Хранит и извлекает значения. Перемещается только вперед. Извлекает, но не хранит элементы. Перемещается только вперед. Хранит, но ие извлекает значения.

Перемещается только вперед. Двунаправленный игератор Прямой итерагор Игератор ввода Игератор вывода Как правило, итераторы, обладаюгцие более широкими возможностями„можно использовать вместо более слабых итераторов. Например, влгесто итератора ввода можно применять прямой итсратор. В библиотеке БТЕ существуют также обралгггые иглераторы (геуегзе йегагог). Они могут быть либо двунаправленными, либо итераторами произвольного доступа.

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

Потоковые итераторы позволяют перемешаться по потоку. Итераторы вставки упрощают вставку элементов в контейнер. Все итераторы должны поддерживать операции над соответствуюгцими указателями. Например, класс итераторов ввола должен предуслгатривать операции ->, ++, == и з=. Кроме того, для присвоения значений нельзя применять оператор "*". В отличие от итераторов ввода, итератор произвольного доступа должен поддерживать операции ->, +„++, -, --,, <, >, <и, >уч -=, +и, ==, з= и (). б?8 Часть 1)ь Библиотека стандартных классов Если контейнеры и алгоритмы образуют фундамент стандартной библиотеки шаблонов, то итераторы представляют собой цемент, связываюшии их в одно целое.

Илгератор (йсгатог) — это обобщение (точнее, абстракция) указателя. Итераторы функционирукп подобно указателям и реализуют стандартные операции над ними. Они позволяют перемешаться по солсржимому контейнера так жс, как указатель перемешается по элсмситам массива. Стагшарт языка С++ предусматривает набор классов и функций, обеспечивающих работу с итерггорами. Однако в подавляющем большинствс задач программирования, требующих применения стандартной библиотеки шаблонов, эти классы и функции непосредственно не используются. Вместо них применяются итераторы, связанные с разнообразными контейнерами и выполцяюшие в них роль указателей, Тем не менее программист должен хорошо разбираться в принципах организации классов, реализующих итераторы, и понимать, как они устроены.

Например, может возникнуть необходимость разработать свои собственный итератор, прелназначенныи для конкретной ситуации. Кроме того, итераторы могут оказаться полезными при разработке независимых библиотек. Итераторы используют заголовок <зеекееок>. Классы низкоуровневых итераторов В заголовке <1овекеахп> опрслсле~ю несколько классов. обеспечивающих поллержку итераторов. Как указывалось в главе 24, кажлыи стаплартиый коцтейпер определяет свой собствспшый тип итератора хеекаеох с помощью оператора еурехтех.

Таким образом, используя стаплартпые коцтейпсры, програылхисты обычно пе применяют пизкоуровисвые классы итсраторов. Однако классы, описанные иижс, могут пригодиться программистам при разработке своих собствеппых итсраторов. В некоторых классах итсраторов используется тип рехе111 е. Этот тип позволяет представить разность между лвугмя указателями. Класс Нега1ог Класс 1еехаеох является базовым лля всех итераторов. Вот как ои выглялпт. Семр1аее <с1авв Сап, с1авв Т, с1авв Пхве = рек<(111 С, с1авв Рохпеех = Т * с1авв Реб = Т а> вккисе хкекаеок ( Сурейег Т иа1ие Суре; Сурейег Пхве <(111екепсе Суре; сурейег Роз опек рохгкек; Сурейег лег хегекегсе; суре<(ег Сас 1еекакок саеедоку; Здесь тип <11елехеасе туре позволяет крапить раз|щеть между лвумЯ адресами, тип ча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секасох::с(111ехепсе суре о111ехегсе суре; Суре<(ег 1еехакок:гуа1ие Суре иа1ие Сурег Сурейег 1еекакох::рохоеех ронтвек; СурейеХ 1кекаеок::кевекепсе хегекепсе; сурейег теехасок::хсекаеок сасевоку хеехасох сасесоху; Встроенные итераторы Заголовок <1еехаеок> содержит несколько встроенных итераторов, которые можно применять как непосредственно, так и лля созлааия других итсраторов. Эти итера- торы перечислены в табл. 35.!. Обратите впимапис иа то, что в заголовке прслусмот- 679 Глава 35.

Стаидартиые итераторы, распределители памяти и функторы репы четыре потоковых итсратора. Они позволяют алгоритмам манипулировать пото- ками. Кроме того, заслуживают внимания итсраторы ввода. Если эги итсраторы ис- пользуются в опсраторс присваивания, они вставляют элементы в послслоаатсльцосгь, а не перезаписывают сс содержимое. Таблица 35/Е Встроенные итераторы зяввхх Ьввхвхвх Ьве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пвегс 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ыс)е <чесгог> ивзлд паюеарасе вгг); Часть й/.

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

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

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

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