我试图存储一个非常大的搜索掩码与位过滤器。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