因为是排序的,所以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;
}
}