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_bitsetそれよりも遅いと聞いたことがstd::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 に答える