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