有序关联容器对内容要求定义严格弱序,就是小于
//翻译直接翻成了小于等于,也不瞅瞅满不满足下面的描述
- 不能同时小于对方(这个叫非自反还是反自反来着)
- 传递性
- ab互不小于,bc互不小于,那ac也得互不小于(无关传递性?)
//1.函数式
bool cmp(const MyClass& a, const MyClass& b);
set<MyClass,decltype(cmp)*> setA(cmp);
//2.仿函数式
struct MyClassCmper{
bool operator() (const MyClass& a, const MyClass& b) const ;
};
set<MyClass,MyClassCmper> setA;
rt
名 | set<A> | map<A,B> |
---|---|---|
key_type | A | pair<const A,B> |
value_type | A | A |
mapped_type | N/A | B |
不可重复的返回pair<iterator,bool>
成功就是插入点位置,true
失败就是等值位置,false
可重复发返回一个iterator指插入点位置
名称 | 描述 |
---|---|
A.bucket_count | 开了多少桶 |
A.max_buncket_cout() | 最多能开的桶有多少 |
A.buucket_size(n) | 第n个桶里有多少元素 |
A.buncket(k) | 关键字为k的元素在几号桶 |
| decltype(A)::local_iterator|某桶的迭代器 decltype(A)::const_local_iterator|某桶的常迭代器 A.begin(n),A.end(n)|某桶的首尾迭代器 A.cbegin(n),A.cend(n)|猜 | A.load_factor()|每个桶平均元素数量 A.max_load_factor()|试图维护的平均桶大小 A.rehash(n)|重组存储,使桶数>=n 且 桶数>元素数/试图维护的平均桶大小 A.reserve(n)|重组存储,其能容n个元素且不必重组
//1.函数式
size_t myHash(const myObj& o){
return hash<int>()(o.getVal());
}
unordered_set<myObj,decltype(myHash)*> test(0,myHash);
//2.仿函数式
struct myHasher {
size_t operator() (const myObj& o) const{
return hash<int>()(o.getVal());
}
};
unordered_set<myObj,myHasher> test();