我試圖存儲一個非常大的搜索掩碼與位過濾器。C++中是否存在類似deque的bitset?
兩個std::vector<bool>
和std::bitset<n>
存儲他們的布爾表示爲位,這是從一個正常的布爾它通常是一個或char
的int32_t
大小不同。
問題是這些數據結構都將它們的元素存儲在一個巨塊中的內存中。操作系統因爲要求太大的塊而生氣。 std::deque<bool>
所做的一件事就是將它的元素存儲在我想的鏈表中。
現在我知道你不能使用一個指針指向一個位而沒有移位,並且使用鏈表類型結構會破壞內存保護的目的。但是您可以像char[]
這樣的2gig塊存儲,使用移位來設置單個位,然後指向另一個2gb塊的鏈接指針,您會挖掘它嗎?
那麼告訴我,這種類型的結構是否存在或甚至是可能的。
面罩能否長出?或者你知道它在編譯時的大小嗎? – 2013-02-26 23:55:16
直到運行時才知道大小,所以它在技術上必須是動態的bitset。 Boost在圖書館裏有一個。 – y2k 2013-02-26 23:57:37
您可能也想嘗試boost :: dynamic_bitset,但我認爲這與長期運行的std :: vector類似。 –
Crog
2013-02-27 00:17:14