【发布时间】:2013-03-13 09:03:11
【问题描述】:
容器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)> 中,但没有成功。
【问题讨论】:
-
如果它是一个普通函数,你还必须将它作为函数指针传递给构造函数。
-
顺便说一句,gcc 有一组很好的builtins,其中一个
int __builtin_popcount(unsigned int)返回整数中设置的位数。
标签: c++ sorting dictionary