容器 C++ set
set, multisetset和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, multimapmap和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; } }