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,则意味着允许重复的元素存储。
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。
被认为是行业中最受欢迎的技能之一, 我们拥有自己的编码基础C++ STL通过激烈的问题解决过程来训练和掌握这些概念。
评论前必须登录!
注册