Exceptional C++ Style之27

原创 2006年05月18日 19:52:00
第27条 数据格式和效率之二:(甚至更少的)位操纵
       class CBitBuffer 
{
public:
       CBitBuffer(){};
       virtual ~CBitBuffer(){};
       size_t Size() const{
              return buf_.size();
       }
 
       void Append(unsigned char* p ,size_t num)
       {
              int bits = numeric_limits<unsigned char>::digits;
              for(int i= 0; i<num;++i)
              {
                     buf_.push_back((*p)&(1<<(bits-1-i%bits)));
                     if ((i+1)%bits == 0)
                            ++p;
              }
       }
       void Get(size_t start,size_t num,unsigned char *dst)const
       {
              int bits = numeric_limits<unsigned char>::digits;
              *dst = 0;
              for(int i= 0;i<num;++ i)
              {
                     *dst |= unsigned char(buf_[start + i]<<(bits -1 -i%bits));
                     if ((i+1)%bits == 0)

                     * ++ dst = 0;

              }
       }
private:
       vector<bool> buf_;
};
       Herb Sutter的位容器,看上去很不错,我也很喜欢。附上代码,以后用的机会可能也不会很多吧。

相关文章推荐

Exceptional C++ Style 目录

泛型编程与 C++ 标准库 1 第1条 vector 的使用 2 第2条 字符串格式化的“动物庄园”之一:sprintf 9 第3条 字符串格式化的“动物庄园”之二:标准的(或极度优雅的)替代方...

Exceptional C++ Style

  • 2014年12月06日 21:38
  • 3.02MB
  • 下载

Exceptional.C++.Style.40.Puzzles

  • 2010年11月09日 14:15
  • 1.45MB
  • 下载

C++ Exceptional 模板设计模式(Template Design Model)

首先看一下下面一段代码:class GenericTableAlgorithm { public: GenericTableAlgorithm(const string& table); ...
  • chpeui
  • chpeui
  • 2016年03月13日 23:39
  • 176

Exceptional C++ Style中文版

  • 2017年10月27日 20:34
  • 12.81MB
  • 下载

Exceptional C++ Style中文版

  • 2014年10月08日 22:52
  • 13.28MB
  • 下载

exceptional C++ item1-3

恩恩 这本书是金牌QA和RD的必备武器,每天学几章,天天乐呵呵~~ int main() { vector e; copy( istream_iterator( cin ), ...

Exceptional C++ Style(chm和pdf)

  • 2013年08月30日 14:37
  • 2.64MB
  • 下载

Exceptional C++ Style 中文版(免费)

  • 2008年10月21日 17:16
  • 12.28MB
  • 下载

Exceptional C++ Syle 学习笔记

看完了《Exceptional C++ Syle》,现将书中一些重要的东西记下来,以供以后翻阅。   第1条        vector的使用  使用vetor∷at,该成员函数会进行下标越界检...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Exceptional C++ Style之27
举报原因:
原因补充:

(最多只允许输入30个字)