我想要一个接口,其函数返回一个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_bitset
比std::bitset
慢。有没有其他方法可以避免使用dynamic_bitset
并且有一个返回std::bitset
的接口,其大小由实现者确定?
答案 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()
返回引用以提高效率。