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


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



Download 1,38 Mb.
bet320/437
Sana22.02.2022
Hajmi1,38 Mb.
#89455
TuriРеферат
1   ...   316   317   318   319   320   321   322   323   ...   437
Bog'liq
word1

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




  1. ; ++ iElement )



11: cout « *iElement « endl;
1 2 :
Простые операции с классами set и multiset библиотеки STL



  1. cout « endl;




  1. }



15:



  1. struct Contactltem




  1. {




  1. string strContactsName;




  1. string strPhoneNumber;




  1. string strDisplayRepresentation;

2 1 :



  1. // Конструктор и деструктор




  1. Contactltem (const strings strName, const string & strNumber)




  1. {




  1. strContactsName = strName;




  1. strPhoneNumber = strNumber;




  1. strDisplayRepresentation = (strContactsName + ": " \




      1. strPhoneNumber);




    1. }



29:



  1. // используется в set::find()




  1. bool operator == (const ContactltemS itemToCompare) const




  1. {

    33:

    return (itemToCompare.strContactsName == \




    this->strContactsName);

  2. }








  1. // используется как предикат сортировки




  1. bool operator < (const ContactltemS itemToCompare) const




  1. {




  1. return (this->strContactsName \




    1. itemToCompare.strContactsName);




  1. }



41:



  1. // Используется в DisplayContents для cout




  1. operator const char*() const




  1. {




  1. return strDisplayRepresentation.c_str();




  1. }




  1. };



48:



  1. int main ()




  1. {




  1. set setContacts;




  1. setContacts.insert(Contactltem("Jack Welsch",



"+1 7889 879 879"));



  1. setContacts.insert(Contactltem("Bill Gates",



"+1 97 7897 8799 8"));



  1. setContacts.insert(Contactltem("Angela Merkel", "+49 23456 5466"));




  1. setContacts.insert(Contactltem("Vladimir Putin",



"+7 6645 4564 797"));



  1. setContacts.insert(Contactltem("Manmohan Singh",



"+91 234 4564 789"));


5 7 : setContacts.insert(Contactltem("Barack Obama", "+1 745 641 314"));
454 ЗАНЯТИЕ 19. Классы наборов библиотеки STL



  1. DisplayContents(setContacts);








  1. cout « "Enter a person whose number you wish to delete: ";




  1. string Namelnput;




  1. getline(cin, Namelnput);



63:



  1. auto iContactFound = setContacts.find(Contactltem(Namelnput,




  1. if(iContactFound != setContacts.end())



66: {

  1. // Удалить контакт, найденный в наборе




  1. setContacts.erase(iContactFound);



69: cout « "Displaying contents after erasing: " « Namelnput



      1. endl;




    1. DisplayContents(setContacts);




    1. }




    1. else




    1. cout « "Contact not found" « endl;








    1. return 0;




    1. }



Результат


Angela Merkel: +49 23456 5466


Barack Obama: +1 745 641 314


Bill Gates: +1 97 7897 8799 8


Jack Welsch: +1 7889 879 879


Manmohan Singh: +91 234 4564 789


Vladimir Putin: +7 6645 4564 797


Enter a person whose number you wish to delete: Jack Welsch


Displaying contents after erasing: Jack Welsch


Angela Merkel: +49 23456 5466


Barack Obama: +1 745 641 314


Bill Gates: +1 97 7897 8799 8


Manmohan Singh: +91 234 4564 789


Vladimir Putin: +7 6645 4564 797


Анализ

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





  1. наборе, поскольку они сортируются на вставке. Вы позволяете пользователю удалить запись, и в строке 64 демонстрируется вызов функции f i n d (), позволяющей найти ту за­ пись, которая удаляется в строке 68 при помощи метода e r a s e ().

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

455

Эта реализация телефонного справочника основана на классе set библиотеки STL, а потому она не позволяет содержать несколько записей с одинаковым зна­ чением. Если необходима реализация справочника, позволяющая хранить две записи с одинаковым именем (скажем, Том), то выбирайте класс multiset библиотеки STL. Если контейнер setContacts станет мультимножеством, то приведенный выше код продолжит работать правильно. Чтобы развить возмож­ ность мультимножества хранить несколько записей с одинаковым значением, используйте функцию-член count (), чтобы знать количество элементов, со­ держащих определенное значение. Это представлено в предыдущем примере кода. Подобные элементы помещаются в мультимножестве рядом, и функция find () возвращает итератор первого найденного значения. Приращение этого итератора позволит обратиться к следующим найденным элементам.

Download 1,38 Mb.

Do'stlaringiz bilan baham:
1   ...   316   317   318   319   320   321   322   323   ...   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