摘要: boost.circular_buffer简介很多时候,我们需要在内存中记录最近一段时间的数据,如操作记录等。由于这部分数据记录在内存中,因此并不能无限递增,一般有容量限制,超过后就将最开始的数据移除掉。在stl中并没有这样的数据结构,一般需要我们自己构造,常用方法如下:用list构造,超过后把数据头移除用vector构造,超过后把数据头移除用数组构造,通过循环的方式覆盖这几种方式都有各自的缺点:用list构造无法实现随机访问,用vector构造移动数据头开销较大,用数组构造需要维护数据头指针和防止计数器溢出,计算位置和数据的移除也相对较麻烦。当然,这些都不是无法解决的问题,就是稍微麻烦点。不 阅读全文
posted @ 2013-08-31 20:14 沙漠中的雨滴 阅读(1110) 评论(0) 推荐(0) 编辑
摘要: #include 02.#include 03.#include 04.05.typedef std::list list_any;06.07.//关键部分:可以存放任意类型的对象08.void fill_list(list_any& la)09.{10. la.push_back(10);//存放常数11. la.push_back( std::string("dyunze") );//存放字符串对象;注意la.push_back(“dyunze”)错误,因为会被当错字符串数组12.}13.14.//根据类型进行显示15.void show_list(list_a 阅读全文
posted @ 2013-08-31 20:08 沙漠中的雨滴 阅读(524) 评论(0) 推荐(0) 编辑
摘要: boost 的 operators 提供了comparison operators、arithmetic operators、operators for iterators 操作。虽然使用 C++ 的标准容器和算法时只需要提供 operator(const T&,const T&);bool operator=(const T&,const T&);当从 from boost::less_than_comparable 派生时,派生类必须提供如下的等价函数 bool operator() const;R operator*() const;// 用户必须实现该操 阅读全文
posted @ 2013-08-31 20:00 沙漠中的雨滴 阅读(650) 评论(0) 推荐(1) 编辑
摘要: Disjoint SetsDisjoint Sets的意思是一堆集合們,它們相互之間都沒有交集。沒有交集是指:各個集合之間沒有擁有共同、相同的元素。中文稱作「分離集」。Disjoint Sets的性質相當特殊。資訊學家仔細觀察其特性後,精心設計出一套優雅美觀的資料結構,可以快速的做集合運算。Union、Find、Split由於每個Disjoint Sets指的就是集合們都沒有交集,我們就不用考慮交集、差集等等的運算,因為結果很明顯。所以只需要考慮union、find、split這三個集合運算:union就是將兩個集合做聯集,合併成一個集合。find就是找找看一個元素是在哪個集合裡面。split 阅读全文
posted @ 2013-08-31 19:48 沙漠中的雨滴 阅读(368) 评论(0) 推荐(0) 编辑