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

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

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

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

Контейнеры, определенные в библиотеке ЗТВ Заголовок Контейнер Описание Ььсеес оесие 11 як <Ы.кеес> Набор битов Двусторонняя очередь Линейный список Хранит пары ключ-значение, е которых кахдому ключу соответствует лишь одно значение Хранит пары клнн-значение, в которых каждому ключу может соот- ветствовать несколько значений Множество, е которое каждый элемент может входить несколько раз Очередь с приоритетами Очередь Множество, в которое каждый элемент входит лишь один раз Стек Динамический массив <оеоие> <11аг> с>ар> ао1ьцзер кю1С1ееь рг1огзьу Сивое <еес> <оиеие> <очесе> <еес> очесе еес <есас1<> «чгессог> есасн ческог Поскольку имена обобщенных типов, использующихся в качестве парамс|ров шаблонных классов, выбираются произвольно, в контейнерных классах они персопрслсляются с помощью оператора суреаев.

Это пспволяст конкретизировать имена этих пшов. Перечислим имена, которые чаше всего псрсопрслеляотся в помощью оператора суребед. взяв суре гагегвпсе с<и>во гегвгепсе 1сагасог '.:Л Общие принципы функционирования Несмотря на сложное внутреннее устройство библиотеки ЗТз., использовать се довольно легко. Во-первых, необходимо выбрать тип контейнера. Каждый из них обладает как преимуществами, так и недостатками. Например, класс еессог хорош при работе с обьсктами, обеспечивающими прямой доступ, массивами.

Класс 11вс позволяет эффективно вставлять и удалять элементы, но снижает быстродействие программы в целом. Класс тиар создает ассоциативный контейнер, однако это сопряжено с дополнительными расхолами памяти. Выбор типа контейнера определяет функции-члены, которые будут использоваться лля вставки, модификации и удаления элсгкснтов, хранящихся в нем. За исключением класса Ьввввг, вСе КОНтейНерЫ автоматиЧеСКИ уВеЛиЧиВаютСя ПО мере дОбавления элементов и уменьшаются при их удалении. Существует много способов вставки и удаления элементов контейнера, Например, послсдоватсльныс (чесссг, 11вс н седов) и ассоциативные контейнеры (зпвр, вмшззар, Глава 24. Введение в стандартную библиотеку шаблонов сопев 1сегасог гечагвв 1свгасог сопев гезгегве 1сегасог ча1ие суре а11осасог суре Неу суре Неу ссипраге жабе соврагв Некая разновидность целочисленного типа Ссылка на элемент Константная ссылка на элемент Итератор Константный итератор Обратный итератор.

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

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

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

Информация, хранящаяся в контейнере, может обрабатываться несколькими алгоритмами. Эти алгоритмы позволяют не только изменять содержимое массива, но и преобразовывать один тип последовательности в другой. В следующих разделах мы научимся применять эти общие способы к трем наиболее типичным контейНерам: чвссот, 11ве и вар. Поняв, как работают эти алгоритмы, легко разобраться со всеми остальными. "-':2 Векторы Наиболее универсальным контейнерным классом является класс чвсеот„представляющий собой динамический массив, размеры которого могут изменяться по мере необходимости.

Как известно, в языке С++ размер массива фиксируется на этапе компиляции. Этот способ определения массивов наиболее эффективен. Однако он связан с серьезными ограничениями, поскольку размер массива в ходе программы изменяться не может. Класс чесеог разрешает эту проблему, выделяя столько динамической памяти, сколько потребуется. Несмотря на то что вектор является динамическим массивом, для доступа к его элементам можно использовать обычный способ индексации. Шаблонная спецификация класса чвсеот выглядит следующим образом.

$ сежр1асе <с1авв т, с1авв А11осасог = а11осасог<т» с1евв чессот Здесь символ т обозначает тип данных, хранящихся в контейнере, а класс АЗ1осевот определяет механизм распределения памяти. По умолчанию используется стандартный распредедитель памяти. Класс частот содержит следующие конструкторы. ехр1зсзс чессог(сопят А11осасот аа = А11осасот()); ехр11сдс чессог(взае суре лам. сопят т ага( = т(), сопят А11осасот аа = А11осасог()); чесгог(сопят чесеог<Т, А11осасот> ааЬ]; сегар1асе <с1авв 1п1сет> чессог(1п1сег аап, 1п1сег елН, сопят А11осагог аа = А11осатог(] ) ) Часть й.

Язык С++ Первый конструктор создает пустой вектор. Второй конструктор создает вектор, состоящий из ли/я элементов, имеющих значение га/, которое можно задавать по умолчанию. Третий конструктор создает вектор, солержаший элементы вектора оЬ. Четвертый конструктор создает вектор, состоящий из элементов, лежащих в лиапазоне, определенном итераторами з/аг/ и е/<// Чтобы обеспечить максимальную гибкость и машинонезависимость, любой объект, хранящийся в векторе, лолжен определять конструктор по умолчанию, а также операторы "«'* и " ".

Некоторые компиляторы налагают на такие объекты дополнительные ограничения. (Точная информация об этих ограничениях содержится в технической документации компилятора.) Все встроенные типы по умолчанию удовлетворяют этим условиям. Хотя шаблонные синтаксические конструкции выглядят довольно сложными, вектор объявляется просто. Рассмотрим несколько примеров. уессог<упс> Ьу; уессог<снаг> сч(5) Создается пустой вектор типа Ъпс. Создается вектор типа снах, состояший из пяти элементов. Инициализируется вектор типа сцаг, состоящий иэ пяти элементов. Создается вектор типа Ъпс, который инициализируется другии целочисленным векторои.

// // к') / // // // // уессог«сиад> су(5, уессог<ьпс> Ът2(ьу) В классе твсеог опрелелены следующие операторы сравнения: « - ! — »- Таблица 24.2. Функции, определенные в классе тес<от Фуас(ия-член Описания геввгвпсв Ьасн()з Возвращает ссылку яэ последний элемент вектора сооэк гоногоссв Ьаси<) сеансу 1свгаеог ьвдьп()у Возвращает итератор, установленные на первыи элесооаг зеегаеог Ьеяго() сояягз мент вектора яомл стеве()я Ьооз вврсу() сопве/ Удаляет из вектора все эпемеоы Возвращает значение етое, если вектор пуст, в противном слу1ае возвращает значение Еазяв Глана 24.

Введение в ствндвртиув библиотеку шаблонов Кроме того, в классе твсеог определен оператор " и *'. Это позволяет обращаться к элементам вектора с помощью стандартной индексации массина. Функции-члены. определенные в классе чвсеог, перечислены в табл. 24.2. (Полное описание шаблонных классов из библиотеки ВТЕ приведено в части!Ч.) К наиболее распространенным функциям — членам класса овсеог относятся функции-члены в1ве<), ьедзп(), ази)(), рави ьас)я<), зпввге() и вгаве().

Функция взвв() возвращает текущий размер вектора. Эта функция довольно полезна, поскольку с ее помощью можно опрелелить размер вектора н ходе выполнения программы. Напомним, что векторы могут излгенять свои размеры по мере необходимости, поэтому их размер определяется во время ныполнения программы. а не на этапе компиляции. Функция Ьвядд() возвращает итератор, установленный на начало вектора. Функция оп<) < ) возвращает итератор, установленный на конец вектора.

Функция рави Ьас)«() записынает значение в конец вектора. Если вектор заполнен, при записи его размер увеличивается. С помощью функции дпввге() значение можно записать в середину вектора. Кроме того, вектор можно инициализировать. В любом случае лля доступа к элементам вектора можно применять обычные обозначения инлексации. Для удаления элемента из вектора предназначена функция агаве < ).

Окончание табл. 24.2 Ош[сание чзункцня-член 1сегаеог езза()з сопве зевгаеог епд() сопвсз 1евгассг егвае(зсвгатог 1)з 1еетвеог вгавв <ьевгаеог з[ал, зеегаеог елб)з гвкегепсв Егопг () з сопят кеевтепсв Егспе() сспвсз 1гегвеог 1пвегг [зсвтасог 1, сопве т акай з чеза зпавгт(ьтегасог 1, Вставляет литл копий элемента та[ перед элементом, нв кото. а1тв курв лып.

сопае т ача[) з рый ссылаетея итератор1 еевр1аев <с1ввв 1пхевг> чсьй 1павгс (зтвгаеог з, тптевг з[ве[, тпкеег ел[[) з Удаляет последний элемента вектора Добавляет элемент ка! а конец вектора Рассмотрим пример, иллюстрирую[ций основные операции над векторами. // Демонстрация основных операций над векторами.

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

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

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

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