我不知道您的问题有任何直接解决方案,但可以通过自定义容器轻松解决。
一种解决方案将简单地涉及 std::bitset 的 std::deque。其中 bitset 的大小是 2 的幂,例如 256。有了这个,您可以获取索引并单独屏蔽 deque 索引和 bitset 索引:
std::deque< std::bitset<256> > ;
unsigned long long = 1500;
bool val = bigBitset[ index>>8 ][ index & 0xFF ];
为了方便起见,这也可以封装在一个类中:
class DequeBitset : public std::deque< std::bitset<256> >
{
public:
struct Index
{
unsigned long index;
unsigned long dequeIndex() const { return index>>8; }
unsigned long bitsetIndex() const { return index&0xFF; }
Index( unsigned long index ) : index(index) {}
};
public:
bool operator[]( const Index& index )
{ return std::deque< std::bitset<256> >::operator [](index.dequeIndex())[ index.bitsetIndex() ]; }
};
int _tmain(int argc, _TCHAR* argv[])
{
DequeBitset test;
test.resize(10);
bool val = test[259];
return 0;
}