Alt linux Программирование на языке С++ в среде Qt Creator Е. Р. Алексеев, Г. Г. Злобин, Д. А. Костюк, О. В. Чеснокова, А. С. Чмыхало Москва alt linux 2015



Download 5,27 Mb.
Pdf ko'rish
bet143/193
Sana24.02.2022
Hajmi5,27 Mb.
#227496
1   ...   139   140   141   142   143   144   145   146   ...   193
Bog'liq
Book-qtC


Глава 10. Объектно-ориентированное программирование
• Функциональный объект (functor) — сокрытие функции в объекте для
использования другими компонентами.
10.7.2
Контейнеры
Будем считать, что стандартная библиотека реализует следующие контейне-
ры:
• vector — линейный массив (особенно эффективен при добавлении элемен-
тов в конец);
• list — двусвязаный список (более эффективен при вставке и перестановке
элементов);
• set — ассоциативный массив уникальных ключей (математический тип
множество);
• multiset — ассоциативный массив с возможностью дублирования ключей;
• bitset — массив, обеспечивающий компактное хранение заданного коли-
чества битов;
• map — ассоциативный массив с уникальными ключами и значениями (хорош
при поиске по ключу);
• multimap — ассоциативный массив с возможностью дублирования ключей
и значений;
• stack — структура данных типа стек;
• queue — структура данных типа очередь;
• priorityqueue — очередь с приоритетами;
• deque — очередь с двухсторонним доступом.
Например, стек целых чисел можно объявить так:
stack s;
С чуть большими затратами можно заставить работать контейнеры с соб-
ственным типом данных.
Основные методы, которые присутствуют почти во всех коллекциях стандарт-
ной библиотеки, приведены ниже.
• empty — определяет, является ли коллекция пустой.
• size — определяет размер коллекции.
• begin, end — указывают на начало и конец коллекции.
• rbegin, rend — то же, но для желающих пройти коллекцию от конца к
началу.
• clear — удаляет все элементы коллекции (если в коллекции сохранены
указатели, нужно ещё удалить все элементы вручную вызовом delete).
• erase — удаляет элемент или несколько элементов из коллекции.
• capacity — вместимость коллекции определяет реальный размер — то есть
размер буфера коллекции, а не то, сколько в нём хранится элементов. Ко-
гда вы создаёте коллекцию, то выделяется некоторое количество памяти.
Как только размер буфера оказывается меньшим, чем размер, необходимый
для хранения всех элементов коллекции, происходит выделение памяти для
нового буфера, а все элементы старого копируются в новый буфер.
Программирование на языке С++ в среде Qt Creator


10.7. Элементы стандартной библиотеки C++
323
• insert — вставка элемента в произвольном месте последовательности
Есть также и необязательные операции: front, back, push_front, push_back,
pop_front
, pop_back, и оператор [].
10.7.3
Итераторы
Итератор (iterator) согласно Википедии — объект, позволяющий програм-
мисту перебирать все элементы коллекции без учёта особенностей её реализации.
В простейшем случае итератором в низкоуровневых языках является указатель.
В C++ есть несколько разных типов итераторов (табл. 10.4):
Таблица 10.4: Типы итераторов
Итератор
Описание
input_iterator
(для чте-
ния)
Читают значения с движением вперёд. Мо-
гут быть инкрементированы, сравнены и
разыменованы.
output_iterator
(для запи-
си)
Пишут значения с движением вперёд. Могут
быть инкрементированы и разыменованы.
forward_iterator
(однона-
правленные)
Читают или пишут значения с движени-
ем вперёд. Комбинируют функциональность
предыдущих двух типов с возможностью со-
хранять значение итератора.
bidirectional_iterator
(двунаправленные)
Читают и пишут значения с движением впе-
рёд или назад. Похожи на однонаправлен-
ные, но их также можно инкрементировать
и декрементировать.
random_iterator
(с произ-
вольным доступом)
Читают и пишут значения с произвольным
доступом. Самые мощные итераторы, со-
четающие функциональность двунаправлен-
ных итераторов и возможность выполнения
арифметики указателей и сравнений указа-
телей.
reverse_iterator
(обрат-
ные)
Или итераторы с произвольным доступом,
или двунаправленные, движущиеся в обрат-
ном направлении.
Итераторы обычно используются парами: один для указания текущей пози-
ции, а второй для обозначения конца коллекции элементов. Итераторы созда-
ются объектом-контейнером, используя стандартные методы begin() и end().
Функция begin()возвращает указатель на первый элемент, а end() — на вооб-
ражаемый несуществующий элемент, следующий за последним.
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В., Чмыхало А. С.


324
Download 5,27 Mb.

Do'stlaringiz bilan baham:
1   ...   139   140   141   142   143   144   145   146   ...   193




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish