错误: Line 9: Char 35: error: incompatible operand types (‘std::pair<iterator, bool>’ (aka ‘pair<_Node_iterator<int, __constant_iterators::value, __hash_cached::value>, bool>’) and ‘std::unordered_set<int, std::hash, std::equal_to, std::allocator>::iterator’ (aka ‘_Node_iterator<int, __constant_iterators::value, __hash_cached::value>’))
(iter == hashs.end()) ? hashs.insert(num) : hashs.erase(iter);
^ ~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~
1 error generated.
原因: 该错误的原因是,您正在尝试将一个 std::unordered_set 的迭代器与一个 std::pair 类型的值进行比较,这两个类型是不兼容的。在条件运算符 ? : 中,hashs.insert(num) 和 hashs.erase(iter) 的返回类型不同,导致编译器无法匹配表达式类型。
修改:
auto iter = hashs.find(num);
if (iter != hashs.end()) {
hashs.erase(iter);
} else {
hashs.insert(num);
}