Невозможно скомпилировать функцию unordered_set с сайта cppreference.com. - PullRequest
1 голос
/ 02 апреля 2019

Я чувствую, что это произойдет только со мной, но вот странность, которую я обнаружил, когда искал функцию содержимого для unordered_set.Вот ссылка, по которой я пытался запустить приведенный ниже пример здесь

enter image description here

Мне кажется, что это довольно странно, но содержит ()еще не существует?Я получаю ту же ошибку на моем компиляторе.Библиотека std потеряла нейрон?

Ответы [ 2 ]

2 голосов
/ 02 апреля 2019

Стандартная библиотека, которая поставляется с вашим компилятором, скорее всего, пока не поддерживает эту функцию.contains() было добавлено в C ++ 20.И C ++ 20 еще не вышел ...

Насколько я могу судить, последняя версия propsal, содержащая функцию-член contains(), - P0919r3 .Вы можете проверить статус реализации C ++ 20 для GCC здесь .Если вы это сделаете, то увидите, что на момент написания он еще не реализован ...

1 голос
/ 02 апреля 2019

Как вы можете видеть на cppreference, эта функция-член поддерживается только начиная с C ++ 20.

К счастью, есть простой обходной путь:

if(example.find(2)!=example.end()) {...}

Если это слишком уродливо, вы можете определить:

template <class C, class T>
bool contains (C &c, T t) {
    return c.find(t)!=c.end(); 
}

и напишите

if(contains(example,2)) { ... }
...