set,multiset,unordered_set,unordered_multiset之间的差异

1. set
(i)按排序顺序存储值。
(ii)仅存储唯一值。
(iii)元素只能插入或删除, 而不能修改。
(iv)我们可以通过指定开始迭代器和结束迭代器的位置来擦除1个以上的元素。
(v)使用迭代器遍历。
(vi)集被实现为二叉搜索树.

//CPP program to demonstrate insert and //delete in set #include < bits/stdc++.h> using namespace std; int main() { //set declare set< int> s; //Elements added to set s.insert(12); s.insert(10); s.insert(2); s.insert(10); //duplicate added s.insert(90); s.insert(85); s.insert(45); //Iterator declared to traverse //set elements set< int> ::iterator it, it1, it2; cout < < "Set elements after sort and " "removing duplicates:\n" ; for (it = s.begin(); it != s.end(); it++) cout < < *it < < ' ' ; cout < < '\n' ; it1 = s.find(10); it2 = s.find(90); //elements from 10 to elements before //90 erased s.erase(it1, it2); cout < < "Set Elements after erase:\n" ; for (it = s.begin(); it != s.end(); it++) cout < < *it < < ' ' ; return 0; }

OUTPUT: Set elements after sort and removing duplicates: 2 10 12 45 85 90 Set Elements after erase: 2 90

2.multiset
(i)按排序顺序存储元素。
(ii)它允许存储多个元素。
(iii)我们可以通过指定start迭代器和end迭代器来擦除1个以上的元素。
注意:-所有其他属性与set相似。
//CPP program to demonstrate insert and //delete in set #include < bits/stdc++.h> using namespace std; int main() { //multiset declare multiset< int> s; //Elements added to set s.insert(12); s.insert(10); s.insert(2); s.insert(10); //duplicate added s.insert(90); s.insert(85); s.insert(45); //Iterator declared to traverse //set elements multiset< int> ::iterator it, it1, it2; cout < < "Multiset elements after sort\n" ; for (it = s.begin(); it != s.end(); it++) cout < < *it < < ' ' ; cout < < '\n' ; it1 = s.find(10); it2 = s.find(90); //elements from 10 to elements before 90 //erased s.erase(it1, it2); cout < < "Multiset Elements after erase:\n" ; for (it = s.begin(); it != s.end(); it++) cout < < *it < < ' ' ; return 0; }

OUTPUT: Multiset elements after sort 2 10 10 12 45 85 90 Multiset Elements after erase: 2 90

3.unordered_set
(i)元素可以任何顺序存储。 (无排序顺序)
(ii)仅存储唯一值。
(iii)用于存储元素的哈希表。
(iv)我们只能删除给出迭代器位置的元素。
注意:-所有其他属性与set相似。
//CPP program to demonstrate insert and //delete in unordered_set #include < bits/stdc++.h> using namespace std; int main() { //unordered_set declare unordered_set< int> s; //Elements added to set s.insert(12); s.insert(10); s.insert(2); s.insert(10); //duplicate added s.insert(90); s.insert(85); s.insert(45); s.insert(12); s.insert(70); //Iterator declared to traverse //set elements unordered_set< int> ::iterator it, it1; cout < < "Unordered_set elements after sort:\n" ; for (it = s.begin(); it != s.end(); it++) cout < < *it < < ' ' ; cout < < '\n' ; it1 = s.find(10); //element 10 erased s.erase(it1); cout < < "Unoredered_set Elements after erase:\n" ; for (it = s.begin(); it != s.end(); it++) cout < < *it < < ' ' ; return 0; }

OUTPUT: Unordered_set elements after sort: 70 85 45 12 10 2 90 Unoredered_set Elements after erase: 70 85 45 12 2 90

4.Unordered_multiset
(i)元素可以任何顺序存储。
(ii)可以存储重复的元素。
(iii)用于存储元素的哈希表。
(iv)我们只能删除给出迭代器位置的元素。
注意:-所有其他属性与set相似。
//CPP program to demonstrate insert and //delete in unordered_multiset #include < bits/stdc++.h> using namespace std; int main() { //unordered_multiset declare unordered_multiset< int> s; //Elements added to set s.insert(12); s.insert(10); s.insert(2); s.insert(10); //duplicate added s.insert(90); s.insert(85); s.insert(45); //Iterator declared to traverse //set elements unordered_multiset< int> ::iterator it, it1; cout < < "Unordered-Multiset elements after sort:\n" ; for (it = s.begin(); it != s.end(); it++) cout < < *it < < ' ' ; cout < < '\n' ; it1 = s.find(10); //element 10 trained s.erase(it1); cout < < "Unordered-Multiset Elements after " "erase:\n" ; for (it = s.begin(); it != s.end(); it++) cout < < *it < < ' ' ; return 0; }

OUTPUT: Unordered-Multiset elements after sort: 85 45 12 90 2 10 10 Unordered-Multiset Elements after erase: 85 45 12 90 2 10

结论:
简而言之,set是一个存储已排序和唯一元素的容器。如果添加了unordered,则意味着元素没有排序。如果添加了multiset,则意味着允许重复的元素存储。
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。
【set,multiset,unordered_set,unordered_multiset之间的差异】被认为是行业中最受欢迎的技能之一, 我们拥有自己的编码基础C++ STL通过激烈的问题解决过程来训练和掌握这些概念。

    推荐阅读