leveldb代码阅读知识积累3

SkipList

 

1,模板

template<typename Key, class Comparator>

class SkipList

{ }

2, 关于C++中模版常用的的typenameclass

先写结论吧:

·        在声明模版参数时,classtypename关键是等价的,可以相互替换。

·        在涉及嵌套依赖类型名”(nested dependent type name)的时候,必须用typename关键字去标识。

·        规则2有个例外,就是在继承列表或者成员初始化列表中的基类初始化时,可以不用typename去标识嵌套依赖类型

 

3,显示调用构造函数

operator new函数和operator delete函数

 

当执行string *sp = new string("initialized");时发生三个步骤:

 

(1)调用名为operator new的标准库函数,分配足够大的原始的未类型化的内存,以保存指定类型的一个对象。

 

(2)运行该类型的一个构造函数,用指定初始化式构造对象。

 

(3)返回指向新分配并构造的对象的指针。

 

当执行delete sp;时发生两个步骤:

 

(1)对sp指向的对象运行适当的析构函数。

 

(2)调用名为operator delete的标准库函数释放该对象所用内存。

char* mem = arena_->AllocateAligned(

      sizeof(Node) + sizeof(port::AtomicPointer)* (height - 1));

  return new (mem) Node(key);

4,迭代器模式

为遍历不同聚集结构提供如:开始,下一个,是否有下一个,是否结束,当前哪一个等等的一个统一接口。


5,C++内部类

资料待查

 

 

Cache

 

 

1,函数指针

函数指针是指向函数的指针变量,即本质是一个指针变量。

int (*f) (int x); /* 声明一个函数指针 */

 f=func; /* 将func函数的首地址赋给指针f */

 

指向函数的指针包含了函数的地址,可以通过它来调用函数

2,二级指针(指向指针的指针)

LRUHandle**

3bucket单向链表

桶排序

4,

void *memset(void *s, int ch, size_t n);

函数解释:将s中前n个字节typedef unsigned int size_t )用ch 替换并返回 s

memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体数组进行清零操作的一种最快方法[

 

5,mutable 关键字

在C++中,mutable是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中,甚至结构体变量或者类对象为const,其mutable成员也可以被修改。

有些时候,我们需要在const的函数里面修改一些跟类状态无关的数据成员,那么这个数据成员就应该被mutalbe来修饰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值