【发布时间】:2021-05-10 19:26:35
【问题描述】:
我正在尝试检查 unordered_set 的 insert() 函数的返回值,但遇到以下错误:
unordered_set<int> t;
t.insert(1);
t.insert(2);
t.insert(3);
t.insert(4);
std::unordered_set<int>::iterator it = t.insert(1); **//Error**
cout<<"size of t="<<t.size()<<endl;
错误-->从 'std::pair<:__detail::_node_iterator true false>, bool>' 转换为非标量类型 'std::unordered_set::iterator {又名 std::__detail::_Node_iterator
-->如果插入函数不成功,插入函数应该发送一个空迭代器,但我无法为插入函数的返回值声明正确的迭代器。 -->在这种情况下,插入函数的 unordered_set 迭代器的正确类型应该是什么?
【问题讨论】:
-
见
std::unordered_set::insert,返回的不是迭代器,而是一个pair<iterator, bool>。 -
你检查过 auto 吗? auto 在大多数编译时类型中进行类型推导
标签: c++ stl unordered-set