std :: map总是根据值对键进行排序。是否可以按照声明上设置的位数进行排序?如何在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)>
没有运气。
如果它是一个正常的功能,你还必须将它传递给构造函数作为函数指针。 – Pubby 2013-03-23 15:20:27
顺便说一句,gcc有一个很好的[builtins](http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Other-Builtins.html),其中一个'int __builtin_popcount(unsigned int) '返回整数中设置的位数。 – 2013-03-23 15:28:44