我得到了一些我想要改进的代码。这是一个简单的应用程序的2DBPP的变化之一,你可以看看在https://gist.github.com/892951如何在C++程序中使用位值而不是字符?
来源看这里是我使用字符(我想切换到二进制值,而不是)的东西大纲。
...
char* bin;
bin = new (nothrow) char[area];
memset(bin, '\0', area);
有时我检查特定值::
if (!bin[j*height+k]) {...}
或块:
if (memchr(bin+i*height+pos.y, '\1', pos.height)) {...}
012的存储器与“0'()的块个
或设定值“1':
memset(bin+i*height+best.y,'\1',best.height);
我不知道任何非标准类型或方法的二进制值工作。我怎样才能使用位而不是字节?
有一个相关的问题,你可能会感兴趣的 - C++ performance: checking a block of memory for having specific values in specific cells
谢谢!
编辑:还有一个更大的问题 - 这是一个改进?我只关心时间。
'C++ bit vector'获得大量Google点击。 – geekosaur 2011-03-29 19:32:58
呃...你有没有使用“C++按位操作”? – 2011-03-29 20:08:22
我有。我想我正在寻找的是memset和memchr的位......我也看过这个矢量,但是我的头也不能包住它。会再来一次。 – 2011-03-29 21:34:12