classbimap
{
public:
//左右视图
left_mapleft;//相当于std::map<X,Y>
right_mapright;//相当于std::map<Y,X>
//构造与复制
bimap();
template< class InputIterator>
bimap(InputIterator first,InputIteratorlast);
bimap(const bimap&)
Bimap&operator=(const bimap&b);
//标签操作:一个被标签类型就是一个已经被 tag所标记的类型。tag可以是任意一个有效的C++类型。在一个 bimap 中,类型总是被标签的。如果你没有指定你自己的tag,则容器使用member_at::left和 member_at::right来分别标签左组和右组。要指定一个定制的tag,则每一边的类型都要标签。
template<classTag>
struct map_by;
template<class Tag>
map_by<Tag>::type by();
template<class Tag>
const map_by<Tag>::type & by() const;
template<class Tag,class IteratorType>
map_by<Tag>::iteratorproject(IteratorType iter);
//迭代器投射操作
template<class IteratoeType>
//将迭代器投射到左映射视图。
left_iterator project_left(IteratorType iter);
template<class IteratoeType>
//将迭代器投射到右映射视图 和
right_iterator project_right(IteratorType iter);
template<class IteratoeType>
//将迭代器投射到关系组合视图
iteratorproject_up(IteratorType iter);
};
vcircular_buffer简介:循环缓冲区,内存中的一块用于保存固定容量的存储区域。当缓冲区被填入时,新的数据从缓冲区的开始被写入,并覆盖掉旧的数据。(见图)
Template<class T,class Alloc>
classcircular_buffer
{
public:
explicit circular_buffer();
explicit circular_buffer(capacity_type capacity);
circular_buffer(size_type n,const_referenceitem);
template <class InputIterator>
circular_buffer(InputIteratorfirst, InputIteratorlast);
~circular_buffer();
iteratorbegin();//取指向circular_buffer 头部的迭代器
iteratorend();//取得指向circular_buffer 头部的迭代器
reference operator[](size_typeindex);//取得在index位置上的元素
//取得位于index位置的元素
referenceat(size_typeindex);
referencefront();//取得第一个元素
referenceback();//取得最后一个元素
//旋转 circular_buffer 中的元素
voidrotate(const_iterator new_begin);
size_typesize() ;//取保存在circular_buffer 中的元素数量
//取得最大可能大小或容量(取决于分配器的max_size())。
size_type max_size() const;
boolempty() const;//circular_buffer 是否为空
boolfull() const;//circular_buffer 是否已满?
//将内部缓冲区线性化至一个连续数组
pointerlinearize();
//赋值 n 个 items到 circular_buffer 中
voidassign(size_type n,const_referenceitem);
//插入一个新元素到circular_buffer 的末端
voidpush_back(const_referenceitem = value_type());
//插入一个新元素到circular_buffer 的头部
voidpush_front(const_referenceitem = value_type());
voidpop_back();//从 circular_buffer 中删除最后一个元素
void pop_front();//从 circular_buffer 中删除第一个元
iteratorinsert(iterator pos, const_referenceitem = value_type());//在指定位置插入一个元素
iteratorerase(iterator pos);//删除指定位置的一个元素
};