为什么bitset是由模板实现的?

时间:2014-01-24 10:11:19

标签: c++ stl bitset

要定义一个16位的位集,它将类似于:

std::bitset<16> bs(0x123);

如果让我设计一个bitset类,我可能会这样做:

mine::bitset bs(16, 0x123);

是否有任何理由通过模板实现std :: bitset?

在某些情况下,这是否应该适用?

1 个答案:

答案 0 :(得分:4)

  

是否有任何理由通过模板实现std :: bitset?这是一个我们应该在某些情况下应用的好模式吗?

因为std::bitset被设计为静态位集。在某些情况下,编译时的大小,将非常有用,特别是对编译器,以优化您的程序。如果您想要动态位集,可以使用boost::dynamic_bitset。就像std::arraystd::vector一样,对于静态大小的容器和动态大小的容器,总有一个地方。