容器 C++ set
set, multiset
set和multiset會根據特定的排序準則自動將元素排序,set中元素不允許重複,
multiset可以重複。
因爲是排序的,所以set中的元素不能被修改,只能刪除後再添加。
向set中添加的元素類型必須重載<操作符用來排序。排序滿足以下準則:
1、非對稱,若A<B爲真,則B<A爲假。
2、可傳遞,若A<B,B<C,則A<C。
3、A<A永遠爲假。
set中判斷元素是否相等:
if(!(A<B || B<A)),當A<B和B<A都爲假時,它們相等。
map, multimap
map和multimap將key和value組成的pair作爲元素,根據key的排序準則自動將元素排序,map中元素的key不允許重複,multimap可以重複。
因爲是排序的,所以map中元素的key不能被修改,只能刪除後再添加。key對應的value可以修改。
向map中添加的元素的key類型必須重載<操作符用來排序。排序與set規則一致。
演示代碼:
#include<iostream>
#include<vector>
#include<set>
#include<algorithm>
#include<functional>
using namespace std;
void print(int i)
{
cout << i << ' ';
}
int main()
{
{
int i;
int ia[10]={12,14,54,6,3,66,45,90,10,20};
vector<int> iv(ia, ia+10);
for_each(iv.begin(), iv.end(), print);
cout << endl;
cout<<endl;
sort(iv.begin(), iv.end());
for_each(iv.begin(), iv.end(), print);
cout << endl;
set<int> is;
is.insert(4);
is.insert(3);
is.insert(7);
is.insert(4);
is.insert(2);
for_each(is.begin(), is.end(), print);
cout << endl;
}
}