set stl
Бързо научете SET в STL с прости примери.
Ще разгледаме задълбочено STL контейнера - комплекти, тук в този урок. Комплектите са асоциативни контейнери с уникални елементи в определен ред.
Стойността на елемент в набора е и ключът, който се използва за достъп до него. Всички елементи в комплекта трябва да бъдат уникални. Не можем да модифицираме елементите в набора, след като са вмъкнати. Ние обаче можем да вмъкнем или изтрием елементите.
=> Проверете тук за пълна C ++ БЕЗПЛАТНА серия за обучение.
Какво ще научите:
- ЗАДАВАНЕ В STL
- Операции на снимачна площадка
- Multiset
- Неустановен комплект
- Заключение
- Препоръчително четене
ЗАДАВАНЕ В STL
За да приложим set, трябва да включим заглавката в нашата програма.
как да добавя svn хранилище в eclipse
#include
Можем да декларираме набор, както следва:
set myset;
Например,ако искаме набор, myset на елемент с цял тип, тогава можем да декларираме набора като:
set myset;
Операции на снимачна площадка
Контейнерът за набор също поддържа подобни операции като карта, която вече обсъдихме. Следват някои от основните операции, поддържани от set.
- започнете : Връща итератор към първия елемент от набора.
- край : Връща итератор към елемента, който следва последния елемент от набора.
- вмъкване : Вмъква нов елемент в набора.
Операцията за вмъкване за комплекта има три варианта:
-
-
- вмъкване (елемент): Това директно вмъква елемента в набора и пренарежда набора.
- вмъкване (позиция, намек): Тук посочваме позицията за вмъкване на елемента.
- вмъкнете (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 е: 120 130 140 160
След вмъкване на 100, наборът от настройки е: 100 120 130 140 160
След вмъкване на масив arr, наборът myset е: 100 110 120 130 140 150 160
След отстраняване на елементи под 130, myset: 130 140 150 160
Както е показано в изхода по-горе, ние създаваме набор, използвайки проста функция за вмъкване.
След това вмъкваме елемент 100 в набора, използвайки друг вариант на функцията за вмъкване, като предаваме референция на итератор и стойност на елемент 100. Виждаме, че след като вмъкването приключи, наборът се пренарежда и редът на елементите се поддържа.
След това вмъкваме масив {110,150,150} с помощта на функцията за вмъкване. Ако виждате изхода на комплекта, показан след вмъкване на масив, виждаме, че в набора е въведена само една стойност от 150. Това е така, защото всички елементи в набора са уникални.
Показваме и размера на комплекта. След това, използвайки функцията за търсене, ние намираме елементите, които са по-малки от 130 и след това извикваме функцията за изтриване, за да премахнем тези елементи. След това показваме резултантния набор.
Това е всичко за зададения контейнер. След това ще обсъдим мултимножество, което е разширение на зададения контейнер.
Multiset
Мултимножество е асоциативен контейнер, подобен на зададен във всички аспекти, с изключение на една разлика, т.е. множество елементи могат да имат една и съща стойност.
Декларацията за мултимножество е както следва:
multiset mset;
Множество набори от цели числа могат да бъдат декларирани като:
multiset mset;
Различните операции, поддържани от multiset, са подобни на тези, поддържани от set.
Сега ще обсъдим директно пример за мултимножество, който демонстрира операцията, която използва.
#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, myset: 15
Екранна снимка на изхода е дадена по-долу:
най-добрият безплатен софтуер за оптимизация за Windows 10
Както е показано в горния изход, първоначално въвеждаме четири елемента в мулти-набора, от които два са еднакви. Но за разлика от набора, тези елементи се вмъкват успешно в мултимножество. След това вмъкваме друг елемент 15, като осигуряваме позиция чрез итератор, който е успешно вмъкнат.
След това намираме елементи, по-малки от 15, в функцията за мултимножество и изтриване на извикване на тези елементи. Накрая показваме мултимножество.
Неустановен комплект
Досега обсъдихме set и multiset в този урок.
Докато наборът е подредена последователност от уникални ключове, ние имаме друг асоциативен контейнер, който се нарича „неподреден набор“, който е набор от ключове или елементи, които се съхраняват в произволен ред. Това означава, че елементите в неподредения набор са ‘неподредени’.
Подобно на неподредената карта, неподреденият набор също се реализира с помощта на хеш таблица, където ключовете се хешират в индекси на хеш таблицата. Поради използването на хеш таблица не е възможно да се поддържа редът на елементите за разлика от набора, който използва балансирана дървесна структура.
Заглавката за внедряване на неподреден набор е.
#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
размер на кофата: 2
Екранна снимка на горния изход е дадена по-долу.
Както е показано в горния изход, първо вмъкваме 5 елемента в неподредения набор и след това вмъкваме още 4 елемента, които демонстрират използването на вариации на функцията за вмъкване. След това показваме съдържанието на неподредения набор.
След това използваме функцията за търсене, за да открием дали ключът = 13 присъства в неподредения набор или не.
След това демонстрираме още две функции ‘bucket_count’ и ‘bucket_size’. Тези функции са свързани с вътрешното изпълнение на неподредената карта.
Този контейнер също така поддържа другите итераторски функции и функции като max_size, изчистване, изтриване, изпразване и т.н., което е подобно на други STL контейнери.
Заключение
С това стигнахме до края на нашия урок за SET в STL.
Надяваме се, че темите, разгледани като част от тези уроци по STL, ще ви помогнат да придобиете разбиране за STL и различните му контейнери.
къде да намерите видеоклипове за виртуална реалност
=> Прочетете Популярната серия за обучение на C ++ тук.
Препоръчително четене
- Приоритетна опашка в STL
- Списъци в STL
- КАРТИ В STL
- Стекове и опашки в STL
- Итератори в STL
- Масиви в STL
- Струни, двойки и кортежи в STL
- Алгоритми в STL