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



Download 1,38 Mb.
bet369/437
Sana22.02.2022
Hajmi1,38 Mb.
#89455
TuriРеферат
1   ...   365   366   367   368   369   370   371   372   ...   437
Bog'liq
word1

cout

«

"Using

'std::replace_if' to replace even values by

-Iм




32:




33:




«

endl;










()







replace_if

(veclntegers.begin (), veclntegers.end

}, -1);




34:







,

[](int element)

{return ((element

% 2)

== 0);




35:

cout

«

endl «

"Contents of

the vector aftef

replacements:"




36:




    1. endl;




  1. DisplayContents(veclntegers);








  1. return 0;




  1. }



Результат


The initial contents of the vector are:


5 8 5 8 8 5 | Number of elements: 6


Using 'std::replace' to replace value 5 by 8


Using 'std::replace_if' to replace even values by -1


Contents of the vector after replacements:


-1 -1 -1 -1 -1 -1 | Number of elements: 6


Анализ

Код заполняет вектор v e c l n t e g e r s типа v e c to r < in t> примерами значений, а затем переупорядочивает его, используя алгоритм s t d : : ra n d o m _ sh u f f l e () библиотеки STL, как показано в строке 24. Строка 30 демонстрирует применение функции r e p la c e () для замены всех значений 5 и 8. В строке 33 функция r e p l a c e _ i f () заменяет все четные числа значением -1 . В результате получается, что у коллекции есть шесть элементов, со­ держащих идентичное значение -1 , как показано в выводе.




Сортировка, поиск в отсортированной коллекции и удаление дубликатов

Сортировка и поиск в отсортированном диапазоне (для повышения производительно­ сти) встречаются в практических приложениях очень часто. Как правило, у вас есть мас­ сив информации, которая должна быть отсортирована, скажем, в целях ее представления. Для сортировки контейнера можно использовать алгоритм s o r t () библиотеки STL:




sort (veclntegers.begin (), veclntegers.end ()); // порядок возрастания

Эта версия функции s o r t () применяет бинарный предикат s t d : : l e s s o , использую ­ щий оператор o p e r a t o r c , реализованный содержащимся в векторе типом. Вы можете предоставить собственный предикат, чтобы изменить порядок сортировки, используя сле­ дующую перегруженную версию:




sort (veclntegers.begin (), veclntegers.end (),


[](int lhs, int rsh) {return (lhs > rhs);} ); // порядок убывания

536 ЗАНЯТИЕ 23. Алгоритмы библиотеки STL


Перед отображением коллекции следует удалить дубликаты. Для удаления располо­ женных рядом повторившихся значений используется алгоритм u n iq u e ():




auto iNewEnd = unique (veclntegers.begin (), veclntegers.end ()); veclntegers.erase (iNewEnd, veclntegers.end ()); // изменить размер

Для быстрого поиска библиотека STL предоставляет алгоритм b i n a r y _ s e a r c h (), который эффективен только в отсортированном контейнере:




bool bElementFound = binary_search (veclntegers.begin (), veclntegers.end (), 2011);


if (bElementFound)


cout « "Element found in the vector!" « endl;

В листинге 23.10 показаны такие алгоритмы библиотеки STL, как s t d : : s o r t (), кото­


рый способен отсортировать диапазон s t d : :b in a r y _ s e a r c h (), обеспечивающий поиск





  1. отсортированном диапазоне, и s t d : : u n iq u e (), удаляющий расположенные рядом со­ впадающие элементы (которые становятся смежными после сортировки).

ЛИСТИНГ 23.10. Использование функций sort (), binary search () и unique ()





  1. #include




  1. #include

  2. #include




  1. #include

  2. using namespace std;



5



  1. template ctypename T>




  1. void DisplayContents(const T& Input)




  1. {




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



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




  1. Download 1,38 Mb.

    Do'stlaringiz bilan baham:
1   ...   365   366   367   368   369   370   371   372   ...   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