首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ unordered_set<insert function>返回值

C++ unordered_set<insert function>返回值
EN

Stack Overflow用户
提问于 2021-02-06 18:31:38
回答 1查看 1.3K关注 0票数 1

我正在尝试检查unordered_set的insert()函数的返回值,但仍然存在以下错误:

代码语言:javascript
复制
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,bool>‘转换为非标量类型'std::unordered_set::iterator {aka std::__detail::_Node_iterator}’请求的

-> insert函数应该发送一个空迭代器,如果insert函数没有成功,但是我无法为insert函数的返回值声明正确的迭代器。-在这种情况下,插入函数的适当类型应该是什么unordered_set迭代器?

EN

Stack Overflow用户

回答已采纳

发布于 2021-02-06 18:35:43

您对unordered_set::insert返回值的理解是不正确的。

返回由迭代器组成的一对插入元素(或阻止插入的元素)和指示插入是否发生的bool。

(来自优先选择)

所以正确的声明是

代码语言:javascript
复制
std::pair<std::unordered_set<int>::iterator, bool> it = t.insert(1);

但实际上(假设你有C++11)编写起来要容易得多

代码语言:javascript
复制
auto it = t.insert(1);

如果您只对返回的迭代器感兴趣,则还可以编写

代码语言:javascript
复制
std::unordered_set<int>::iterator it = t.insert(1).first;

或者再次使用自动

代码语言:javascript
复制
auto it = t.insert(1).first;
票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66080468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档