Урок №207. Алгоритми STL

  Юрій  | 

  Оновл. 20 Кві 2021  | 

 14

Крім контейнерів і ітераторів, бібліотека STL також надає ряд універсальних алгоритмів для роботи з елементами контейнерів. Вони дозволяють виконувати такі операції, як пошук, сортування, вставка, зміна позиції, видалення і копіювання елементів контейнера.

Алгоритми STL

Алгоритми STL реалізовані у вигляді глобальних функцій, які працюють з використанням ітераторів. Це означає, що кожен алгоритм потрібно реалізувати всього лише один раз, і він працюватиме з усіма контейнерами, які надають набір ітераторів (включаючи і ваші власні (користувацькі) контейнерні класи). Хоча це має величезний потенціал і надає можливість швидко писати складний код, у алгоритмів також є і “темна сторона” — деяка комбінація алгоритмів і типів контейнерів може не працювати/працювати з поганою продуктивністю/викликати нескінченні цикли, тому слід бути обережним.

Бібліотека STL надає досить багато алгоритмів. На цьому уроці ми розглянемо лише деякі з найбільш поширених і простих у використанні алгоритмів. Для їх роботи потрібно підключити заголовок algorithm.

Алгоритми min_element() і max_element()

Алгоритми min_element() і max_element() знаходять мінімальний і максимальний елементи в контейнері:

Результат виконання програми:

0 4

Алгоритми find() і list::insert()

У наступному прикладі ми використаємо алгоритм find(), щоб знайти певне значення в списку, а потім використаємо функцію list::insert() для додання нового значення в список:

Результат виконання програми:

0 1 7 2 3 4

Алгоритми sort() і reverse()

У наступному прикладі ми відсортуємо весь вектор, виведемо відсортовані елементи, а потім виведемо їх вже в зворотному порядку:

Результат виконання програми:

-8 -3 3 4 5 8 12
12 8 5 4 3 -3 -8

Зверніть увагу, загальний алгоритм sort() не працює з вектором. У вектора є свій власний метод sort(), який, в даному випадку, є ефективнішим.

Висновки

Хоча це всього лише невеликий приклад алгоритмів, які надає STL, але цього вже має бути достатньо, щоб ви побачили користь і те, наскільки легко використовувати алгоритми STL в поєднанні з ітераторами і контейнерами.

Оцінити статтю:

1 Зірка2 Зірки3 Зірки4 Зірки5 Зірок (Немає Оцінок)
Loading...

Залишити відповідь

Ваш E-mail не буде опублікований. Обов'язкові поля відмічені *