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

 

你可能感兴趣的:(C++,c,each,pair)