Я пытаюсь иметь вторичный сортировку, основанную на количестве бит, установленных в структуре данных с именем «set_type», что является ничем иным, как typedef для uint64_t. Что может пойти не так? Поскольку, если я удаляю оператор return (n1> n2), тогда код выполняется отлично. Тем не менее, я хочу сохранить узлы в SET в порядке возрастания двойного значения и в порядке убывания количества бит, установленных в SET_TYPE.Ошибка сегментации: вторичная сортировка в SET C++ 11
struct setNode {
std::pair<double,set_type> data;
};
unsigned int bitCount (set_type value) {
unsigned int count = 0;
while (value > 0) { // until all bits are zero
if ((value & 1) == 1) // check lower bit
count++;
value >>= 1; // shift bits, removing lower bit
}
return count;
}
struct CompClass {
bool operator() (const setNode& lhs, const setNode& rhs) const
{
if (lhs.data.first == rhs.data.first) {
int n1 = bitCount(lhs.data.second);
int n2 = bitCount(rhs.data.second);
return n1 > n2;**//Statement causing error**
}
return lhs.data<rhs.data;
}
};
Просьба показать [mcve]. –