SkipList
1,模板
template<typename Key, class Comparator>
class SkipList
{ }
2, 关于C++中模版常用的的typename和class,
先写结论吧:
· 在声明模版参数时,class和typename关键是等价的,可以相互替换。
· 在涉及“嵌套依赖类型名”(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**
3,bucket单向链表
桶排序
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成员也可以被修改。