3

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

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大小由实现者确定的接口?

4

1 回答 1

2

首先,由于其静态性,std::bitset 不被认为是一个好的解决方案。除了boost::东西之外,您还可以使用...

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

但这仍然太静态了,不是吗?好吧,标准指定了 的特殊化std::vector<bool>,通常实现为动态的、内存高效的std::bitset! 所以...

#include <vector>

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

编辑IMyInterface::GetBits()出于效率目的,返回参考。

于 2015-08-30T05:47:27.763 回答