set stl
Швидко вивчіть SET в STL на простих прикладах.
Ми глибоко розглянемо контейнер STL - Набори, тут, у цьому підручнику. Набори - це асоціативні контейнери з унікальними елементами в певному порядку.
Значення елемента в наборі також є ключем, який використовується для доступу до нього. Всі елементи набору повинні бути унікальними. Ми не можемо змінити елементи набору, як тільки вони будуть вставлені. Однак ми можемо вставити або видалити елементи.
=> Перегляньте тут повну серію навчальних програм для C ++.
Що ви дізнаєтесь:
- ВСТАНОВИТИ У STL
- Операції на знімальному майданчику
- Мультимножина
- Невпорядкований набір
- Висновок
- Рекомендована література
ВСТАНОВИТИ У STL
Для реалізації набору нам потрібно включити заголовок у нашу програму.
як витягти .7z файли на
#include
Ми можемо оголосити набір наступним чином:
set myset;
Наприклад,якщо ми хочемо набір, набір елементів з цілочисельним типом, тоді ми можемо оголосити набір як:
set myset;
Операції на знімальному майданчику
Контейнер набору також підтримує подібні операції, як карта, яку ми вже обговорювали. Нижче наведено деякі основні операції, що підтримуються набором.
- почати : Повертає ітератор до першого елемента набору.
- кінець : Повертає ітератор до елемента, що слідує за останнім елементом набору.
- вставити : Вставляє новий елемент у набір.
Операція вставки для набору має три варіанти:
-
-
- вставка (елемент): Це безпосередньо вставляє елемент у набір і змінює порядок набору.
- вставка (позиція, підказка): Тут ми вказуємо позицію для вставки елемента.
- вставте (iterator.begin (), iterator.end ()): У цьому варіанті ми можемо безпосередньо вставити діапазон у набір, як масив чи інший набір.
-
- стерти : Видаляє елемент із набору.
- розмір : Повертає розмір набору.
- max_size : Повертає максимальний розмір, який може містити набір.
- порожній : Повертає, чи набір порожній.
- ясно : Видаляє всі елементи з набору.
- знайти : Знаходить елемент у наборі. Якщо елемент знайдено, він повертає ітератор до цього елементу набору. Якщо його не знайти, він повертає ітератор до кінця набору.
Нижче наведено програму, яка демонструє використання деяких важливих функцій SET.
#include #include #include using namespace std; int main() { set myset; myset.insert(140); myset.insert(130); myset.insert(160); myset.insert(120); cout<<'
Size of myset: '< Вихід:
Розмір місету: 4
Набір myset: 120130140160
Після вставки 100 встановлюється місет: 100 120 130 140 160
Після вставки масиву arr, встановлено місет: 100 110 120 130 140 150 160
Після видалення елементів менше 130, місет: 130140150160

Як показано у виведенні вище, ми створюємо набір, використовуючи просту функцію вставки.
Далі ми вставляємо елемент 100 у набір, використовуючи інший варіант функції вставки, передаючи посилання ітератора та значення елемента 100. Ми бачимо, що як тільки вставка закінчена, набір переупорядковується та порядок елементів зберігається.
Далі ми вставляємо масив {110,150,150} за допомогою функції вставки. Якщо ви бачите, що набір результатів відображається після вставки масиву, ми бачимо, що до набору введено лише одне значення 150. Це пов’язано з тим, що всі елементи набору унікальні.
Ми також відображаємо розмір набору. Далі, використовуючи функцію пошуку, ми знаходимо елементи менше 130, а потім викликаємо функцію стирання для видалення цих елементів. Потім ми відображаємо отриманий набір.
Це все про встановлений контейнер. Далі ми обговоримо мультимножество, яке є розширенням встановленого контейнера.
Мультимножина
Мультимножина - це асоціативний контейнер, подібний до набору у всіх аспектах, за винятком однієї різниці, тобто декілька елементів можуть мати однакове значення.
Декларація для мультимножини така:
multiset mset;
Набір цілочисельних елементів можна оголосити як:
мультимножина mset;
Різні операції, що підтримуються мультимножиною, подібні до тих, що підтримуються набором.
Тепер ми безпосередньо обговоримо приклад мультимножини, який демонструє операцію, яку він використовує.
як писати тести на junit в Java - -
#include #include #include using namespace std; int main() { multiset myset; myset.insert(11); myset.insert(13); myset.insert(13); myset.insert(10); cout<<'
Size of myset: '< Вихід:
Розмір місету: 4
Після вставки чотирьох елементів мультимножина myset має значення: 10 11 13
13
Після вставки 15 мультимножина myset має значення: 10 11 13 13 15
Після видалення елементів менше 15, місет: 15
Скріншот результату наведено нижче:

Як показано у вищенаведеному висновку, спочатку ми вводимо чотири елементи в мультимножину, з яких два однакові. Але на відміну від набору, ці елементи успішно вставляються в мультимножество. Потім ми вставляємо ще один елемент 15, забезпечуючи позицію через ітератор, який успішно вставляється.
Далі ми знаходимо елементи менше 15 у мультимножині та викликаємо функцію стирання на цих елементах. Нарешті, ми відображаємо мультимножество.
Невпорядкований набір
Наразі ми обговорювали набір і мультимножество в цьому посібнику.
Хоча набір є впорядкованою послідовністю унікальних ключів, ми маємо ще один асоціативний контейнер, який називається «невпорядкований набір», який являє собою набір ключів або елементів, які зберігаються в будь-якому порядку. Це означає, що елементи в невпорядкованому наборі є «невпорядкованими».
Подібно до невпорядкованої карти, невпорядкований набір також реалізується за допомогою хеш-таблиці, де ключі хешуються в індекси хеш-таблиці. Через використання хеш-таблиці неможливо підтримувати порядок елементів на відміну від набору, який використовує збалансовану деревоподібну структуру.
Заголовок для реалізації невпорядкованого набору -.
#include
Ми оголошуємо невпорядковану карту цілого типу наступним чином:
Unordered_set uset;
Операції, що підтримуються unordered_set, подібні до тих, що підтримуються unordered_map, що обговорюється в наших підручниках на карті.
Нижче наведено приклад, який демонструє різні операції з unordered_set.
#include #include using namespace std; int main() { unordered_set uset; unordered_set :: iterator it; for(int i=0;i<5;i++){ uset.insert(i+2); } cout<<'
Size of uset: '< Вихід:
Розмір використання: 5
Елементи в невпорядкованому наборі: 99 39 6 5 26 4 3 13 2
Знайдений ключ = 13
umap bucket_count: 11
bucket_size: 2
Знімок екрана вищевказаного виводу наведено нижче.

Як показано у вищенаведеному висновку, ми спочатку вставляємо 5 елементів у невпорядкований набір, а потім вставляємо ще 4 елементи, які демонструють використання варіацій функції вставки. Потім відображаємо вміст невпорядкованого набору.
Далі ми використовуємо функцію find, щоб знайти, чи є ключ = 13 у невпорядкованому наборі чи ні.
Після цього ми демонструємо ще дві функції 'bucket_count' і 'bucket_size'. Ці функції пов'язані з внутрішньою реалізацією невпорядкованої карти.
Цей контейнер також підтримує інші функції ітератора та такі функції, як max_size, clear, стирання, порожнє тощо, подібні до інших контейнерів STL.
Висновок
На цьому ми закінчили наш підручник з SET у STL.
Ми сподіваємось, що теми, висвітлені в рамках цих посібників з STL, допоможуть вам зрозуміти STL та різні його контейнери.
Безкоштовно завантажити повноцінну версію
=> Ознайомтесь з Популярною серією навчальних програм C ++ тут.
Рекомендована література
- Черга пріоритетів у STL
- Списки в STL
- КАРТИ У STL
- Стеки та черги в STL
- Ітератори в STL
- Масиви в STL
- Струни, пари та кортежі в STL
- Алгоритми в STL