Bitset作为函数的返回值
Bitset as the return value of a function
我想有一个接口,其函数返回一个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
的大小是由实现者确定的?
首先,由于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;
};
Edit:使IMyInterface::GetBits()
返回一个引用以提高效率。
相关文章:
- 从python中调用C++函数并获取返回值
- 编译器警告:执行到达值返回函数的末尾而不返回值
- 将返回值存储在函数指针数组的指针中是如何工作的?
- 程序不向函数返回值
- 如何在另一个函数中使用返回值作为参数?
- 编写以 C++ 为单位返回值的函数
- 了解在返回值之前和之后使用 EAX 的函数调用
- 当我使用 void 函数的返回值(通过强制转换函数指针)时,究竟会发生什么?
- 如何在不使用临时变量的情况下取消引用返回指针的函数的返回值?
- 如何将不可移动和不可复制的函数返回值获取到数组中
- G++ 编译器是否在未使用返回值的情况下将 constexpr 函数视为常规函数?
- 为什么当你将函数的返回值乘以零时它不会短路?
- 函数的返回值类型是别名 ***或 *** 布尔值
- 如何在没有返回值的情况下使用(特征)unaryExpr 和 lambda 函数?
- 创建 std::函数,它返回具有函数成员值的变量.分段错误
- 为什么这个"ctypes"包装函数的返回值是"c_long(0)"而不是&quo
- 函数不显示返回值 - C++
- 结构新手,我对如何从 void 函数中返回值并将其放入另一个函数感到困惑
- 将 void 函数更改为返回值函数
- 返回值函数中结构成员赋值的额外拷贝