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
Btw, gcc имеет хороший набор [встроенных] (http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Other-Builtins.html), один из которых «int __builtin_popcount (unsigned int) 'возвращает количество бит, заданных в целое число. –