C ++: Сравнение списка пар с некоторыми недопустимыми значениями (QNAN) - PullRequest
2 голосов
/ 10 января 2011

Мне нужно сравнить два std :: list , но некоторые двойные числа могут быть недопустимыми числами (QNAN). Если какие-либо недопустимые числа являются записями списка, процесс сравнения не будет работать, потому что сравнение того же недопустимого значения всегда будет приводить к значению false. Какой самый простой и элегантный способ решения проблемы?

Моя идея состояла в том, чтобы создать копии обоих списков, перебрать их и удалить недопустимые значения, а затем сравнить остальные списки. В списках обычно содержится 20-50 значений. Есть ли более дружественный способ ее решения?

1 Ответ

4 голосов
/ 10 января 2011
bool compare(float f1, float f2)
{
    return (f1 != f1 && f2 != f2)? true: f1 == f2;
}

std::list<float> l1, l2;
bool res = std::equal(l1.begin(), l1.end(), l2.begin(), compare);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...