C++ за 21 день седьмое издание



Download 1,38 Mb.
bet323/437
Sana22.02.2022
Hajmi1,38 Mb.
#89455
TuriРеферат
1   ...   319   320   321   322   323   324   325   326   ...   437
Bog'liq
word1

7:

cout

«

"Number of

elements,

size() = " « Input.size() «

endl;

8:

cout

«

"Max bucket

count =

" « Input.max_bucket_count()




    1. endl;




  1. cout « "Load factor: " « Input.load_factor() « endl;




  1. cout « "Max load factor = " « Input.max_load_factor() « endl;




  1. cout « "Unordered set contains: " « endl;



1 2 :

Преимущества и недостатки использования наборов и мультимножеств

457




  1. for(auto iElement = Input.cbegin() // auto, cbegin: C++11




  1. ; iElement != Input.cend() // cend: C++11




  1. ; ++ iElement )




  1. cout« *iElement « '



17:



  1. cout« endl;




  1. }

2 0 :



  1. int main()



22: {



  1. // создание экземпляра контейнера unordered_set:




  1. unordered_set usetlnt;



25:



  1. usetlnt.insert (1000);




  1. usetlnt.insert(-3);




  1. usetlnt.insert(2011);




  1. usetlnt.insert(300);




  1. usetlnt.insert(-1000);




  1. usetlnt.insert(989);




  1. usetlnt.insert(-300);




  1. usetlnt.insert (111);




  1. DisplayContents(usetlnt);




  1. usetlnt.insert(999);




  1. DisplayContents(usetlnt);








  1. // find() :




  1. cout « "Enter int you want to check for existence in set:




  1. int Key = 0;




  1. cin » Key;




  1. auto iPairThousand = usetlnt.find(Key);



43:



  1. if (iPairThousand != usetlnt.end())




  1. cout « *iPairThousand « " found in set" « endl;




  1. else




  1. cout « Key « " not available in set" « endl;








  1. return 0;




  1. }



Результат


Number of elements, size() = 8


Max bucket count = 8


Load factor: 1


Max load factor = 1


Unordered set contains:


1000 -3 2011 300 -1000 -300 989 111


Number of elements, size() = 9


Max bucket count = 64


Load factor: 0.140625


Max load factor = 1


Unordered set contains:


1000 -3 2011 300 -1000 -300 989 999 111


Enter int you want to check for existence in set: -1000 -1000 found in set
458 ЗАНЯТИЕ 19. Классы наборов библиотеки STL


Анализ

Здесь создается контейнер u n o rd e red _ set для целых чисел; в него вставляется восемь значений, а затем содержимое отображается на экране, включая поставляемую методами m ax_ bucket_ count (), lo a d _ f a c to r () и m a x _ lo a d _ fa c to r () статистику, как показано





  1. строках 8-10. Вывод свидетельствует о том, что счет ячеек начинается с восьми, с вось­ мью элементами в контейнере и коэффициентом загрузки 1, который является максималь­ ным. Когда в контейнер u n o rd e re d _ s e t вставляется девятый элемент, он реорганизует себя, создаст 64 ячейки и воссоздаст хеш-таблицу, а коэффициент загрузки уменьшится. О стальная часть кода в m ain () демонстрирует, что синтаксис поиска элементов в кон­ тейнере u n o rd e re d _ se t подобен таковому в контейнере se t. Метод f in d () возвращает итератор, успех выполнения которого должен быть проверен, как показано в строке 42, прежде чем он будет использован.

Поскольку хеши обычно используются в хеш-таблице для поиска значения, за­ данного по ключу, обратитесь за подробной информацией к разделу о контей­ нере std::unordered_map занятия 20, “Классы карт библиотеки STL".

Контейнер std: :unordered_map является реализацией хеш-таблицы, поя- ;


вившейся в С++11. !





РЕКОМЕНДУЕТСЯ

Помните, что контейнеры set и multiset би­ блиотеки STL оптимизированы для ситуаций с частым поиском


Помните, что контейнер std: :multiset допускает несколько одинаковых элементов (ключей), а контейнер std::set разрешает хранить только уникальные значения


Используйте метод multiset::count {зна­ чение) для поиска количества элементов с определенным значением


Помните, что методы set:: size {) и multiset::size О возвращают количество элементов в контейнере


НЕ РЕКОМЕНДУЕТСЯ

Не забывайте определять операторы opera­ tor и operator^ для классов, объекты которых могут храниться в таких контейнерах, как set и multiset. Первый становится пре­ дикатом сортировки, а последний используется для таких функций, как set:: find ()


Не используйте контейнеры std:: set и




std: multiset в случаях с частыми встав­ ками и нечастыми поисками. Для этого обыч­ но лучше подходят такие контейнеры, как std::vector и std::list

Резюме

На сегодняшнем занятии рассматривались контейнеры s e t и m u lt is e t библиотеки STL, их основные функции-члены и характеристики. Вы такж е видели их применение для разработки простого меню телефонного справочника, реализующего также функции поиска и удаления.



Вопросы и ответы

459



Вопросы и ответы



  1. Как мне объявить набор целых чисел, отсортированных и хранящихся в порядке убывания величин?




  1. аблон класса s e t < i n t > определяет набор целых чисел. Он использует заданный по умолчанию предикат сортировки s t d : :le s s < T > , обеспечивающ ий сортировку эле­

ментов в порядке возрастания величин, и может быть также выражен как s e t c i n t , l e s s < i n t > > . Для сортировки в порядке убы вания величин определите набор как s e t < i n t , g r e a t e r c i n t » .


Что будет, если вставить строку "Jack" в набор строк дваады?

Н абор не предназначен для хранения совпадаю щ их значений. Реализация класса s t d : : s e t не позволила бы вставить второе значение.






  1. Download 1,38 Mb.

    Do'stlaringiz bilan baham:
1   ...   319   320   321   322   323   324   325   326   ...   437




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