容器 C++ set

容器 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;
 }
  }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章