find( чтобы искать по полю структуры?
сделать hash для структуры, которая возвращает хеш от поля
а так чтобы без создавания структуры поиска никак?
std::hash<..> в параметрах find() и erase() нет
конечно нет и не должно быть. хеш не может меняться динамически, так как он задаёт саму структуру типа
да но со своей структурой у меня есть функция задающая хеш, следственно по ключу я могу его воссоздать, но так я понял найти структуру в set не получится
#include <unordered_set> struct Foo { int k1; float k2; }; struct FooEqk1 { bool operator()(const Foo& lhs, const Foo& rhs) const { return lhs.k1 == rhs.k2; }; }; struct FooHashk1 { std::size_t operator()(const Foo& foo) const noexcept { return std::hash<decltype(foo.k1)>()(foo.k1); } }; using FooSetByK1 = std::unordered_set<Foo, FooHashk1, FooEqk1>;
Вместо второго и третьего класса можно использовать просто функции
Пишет ошибку что темплейтный аргумент должен быть типом
Обсуждают сегодня