bit_vector的实现(类似于标准库中的bitset的功能)
时间: 2024-03-05 16:54:55 浏览: 33
bit_vector是一种可以储存大量二进制位的数据结构,可以类比于标准库中的bitset。下面是一个简单的bit_vector的实现示例,可供参考:
```c++
#include <iostream>
#include <vector>
class bit_vector {
public:
bit_vector() : data(1) {}
bit_vector(size_t n) : data((n+31)/32) {}
void set(size_t i) {
data[i/32] |= 1 << (i%32);
}
void reset(size_t i) {
data[i/32] &= ~(1 << (i%32));
}
bool test(size_t i) const {
return data[i/32] & (1 << (i%32));
}
size_t size() const {
return data.size() * 32;
}
private:
std::vector<int> data;
};
int main() {
bit_vector bv(100);
bv.set(0);
bv.set(1);
bv.set(31);
bv.set(32);
bv.set(63);
bv.set(64);
for (size_t i = 0; i < bv.size(); ++i) {
std::cout << bv.test(i);
}
std::cout << std::endl;
return 0;
}
```
以上代码中,bit_vector类通过使用一个int型的vector来储存二进制位,每个int型可以储存32个二进制位。set()函数可以将指定位置的二进制位设为1,reset()函数可以将指定位置的二进制位设为0,test()函数可以测试指定位置的二进制位是否为1,size()函数返回bit_vector的大小。以上只是一个简单的实现示例,实际上还可以对bit_vector进行更多的优化和扩展。