Поскольку вы пытаетесь сохранить итераторы в неупорядоченном наборе, вам не нужен оператор сравнения, а нужна хеш-функция.
Я предполагаю, поскольку каждый отдельный итератор будет указывать наВы можете использовать хеш-значение ключа для хеширования итератора.
struct iterator_hash
{
size_t operator()(std::unordered_map<int, float>::const_iterator it) const
{
return std::hash<int>()(it->first);
}
};
и создавать неупорядоченный набор как:
std::unordered_set<umap::iterator, iterator_hash> my_its;
unordered_set
также требуется функция равенства, но итераторы, владеющие operator==
, должны работать нормально, если все итераторы принадлежат одному и тому же unordered_map
.
Осторожно с аннулированием итератора.