容器 std::map
总是根据键的值对键进行排序。例如,是否可以根据声明时设置的位数对其进行排序?
我有一个计算设置位的功能:
for(size_t i = 0; i < CHAR_BIT * sizeof value; ++i, value >>= 1) {
if ((value & 1) == byteState) ++num_bits;
}
但是我不知道在声明地图时如何应用它:
std::map<int, int> myMap = {
{1,2},
{3,4},
//...
}
我试图将它作为声明中的第三个参数 <int,int,decltype(countSetBits)>
,但没有运气。
原文由 rsk82 发布,翻译遵循 CC BY-SA 4.0 许可协议
您需要将函数包装在二元运算符中,如下所示:
现在您可以在声明中使用
cntBitsCmp
:这是 关于 ideone 的演示。它正确地将 128 排在 3 之前,因为 3 设置了两位,而 128 只有一位。