Bitset作为函数

时间:2015-08-30 05:36:33

标签: c++ bitset boost-dynamic-bitset std-bitset

我想要一个接口,其函数返回一个bitset:

class IMyInterface
{
public:
    virtual std::bitset<100> GetBits() = 0;
};

问题在于我不想强制bitset的大小。所以我认为我必须使用boost::dynamic_bitset代替:

class IMyInterface
{
public:
    virtual boost::dynamic_bitset<> GetBits() = 0;
};

我听说boost::dynamic_bitsetstd::bitset慢。有没有其他方法可以避免使用dynamic_bitset并且有一个返回std::bitset的接口,其大小由实现者确定?

1 个答案:

答案 0 :(得分:2)

首先,由于其静态性,std::bitset is not considered to be a good solution。除了boost::之外,你可以使用像......这样的东西。

template<size_t N>
class IMyInterface {
    public:
        virtual std::bitset<N> GetBits() = 0;
};

但那仍然是太静态,不是吗?好吧,the standards specify that there's an specialization of std::vector<bool>,通常实现为动态,内存效率std::bitset!所以......

#include <vector>

class IMyInterface {
    public:
        virtual std::vector<bool>& GetBits() = 0;
};

修改:已生成IMyInterface::GetBits()返回引用以提高效率。