interval_set 类
在ceph源码中多次使用到,这里简单记录备注一下。
interval_set中实现了两个内部迭代器类:
// const_iterator
class const_iterator : public std::iterator <std::forward_iterator_tag, T>
{
...
protected:
typename std::map<T,T>::const_iterator _iter;
}
//iterator
class iterator : public std::iterator <std::forward_iterator_tag, T>
{
...
protected:
typename std::map<T,T>::iterator _iter;
}
内部成员变量:
private:
int64_t _size;
std::map<T,T> m;
成员变量m是一个map类型里面记录了模板类T的键值对集合,其key是start,value是length,即从start开始延续的长度。_size是所有m中所有len的总和。