我得到了一些我想要改進的代碼。這是一個簡單的應用程序的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