Skip to content

Latest commit

 

History

History
79 lines (63 loc) · 1.96 KB

11关联容器.md

File metadata and controls

79 lines (63 loc) · 1.96 KB

cppp第十一章 阅读笔记

1.严格弱序

有序关联容器对内容要求定义严格弱序,就是小于

//翻译直接翻成了小于等于,也不瞅瞅满不满足下面的描述

  • 不能同时小于对方(这个叫非自反还是反自反来着)
  • 传递性
  • ab互不小于,bc互不小于,那ac也得互不小于(无关传递性?)

2.自定义比较器

//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;

3.std::pair这东西在<utility>里,记一下吧秋梨膏

rt

4.取kv类型

set<A> map<A,B>
key_type A pair<const A,B>
value_type A A
mapped_type N/A B

5.insert返回值

不可重复的返回pair<iterator,bool>
    成功就是插入点位置,true
    失败就是等值位置,false
可重复发返回一个iterator指插入点位置

6.无序元素桶管理

名称 描述
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个元素且不必重组

7.自定义哈希

//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();