当前位置: 首页 > 知识库问答 >
问题:

C++unordered_set返回值

令狐翰
2023-03-14

我试图检查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 ,bool>”转换为非标量类型“std::unordered_set::iterator{又名std::__detail::_node_iterator }”

共有1个答案

马新觉
2023-03-14

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

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

(来自cppreference)

所以正确的声明是

std::pair<std::unordered_set<int>::iterator, bool> it = t.insert(1);

但实际上(假设你有C++11),它更容易写

auto it = t.insert(1);

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

std::unordered_set<int>::iterator it = t.insert(1).first;

或者再次使用auto

auto it = t.insert(1).first;
 类似资料:
  • 本文向大家介绍C++ 返回值省略,包括了C++ 返回值省略的使用技巧和注意事项,需要的朋友参考一下 示例 如果从函数返回prvalue表达式,并且prvalue表达式的类型与函数的返回类型相同,则可以忽略prvalue临时对象的副本: 在这种情况下,几乎所有编译器都将忽略临时构造。

  • 本文向大家介绍Objective-C语言返回值,包括了Objective-C语言返回值的使用技巧和注意事项,需要的朋友参考一下 示例 当要从方法返回值时,请将要返回的类型放在第一组括号中。 您要返回的值放在return关键字之后;

  • 我的代码: 输出: 我知道printf在打印字符串时返回字符数。但为什么打印10时返回7。打印int时printf的返回值是多少? 可能重复:C中printf()函数的返回值

  • TestCase 2: baseChars:['a','b'] 所需字符串长度:1 产出: 有人能帮忙吗?我已经把我的代码放在GitHub里了。如果您可以将我的实现更改为非递归,但保留函数返回类型,也将受到重视。

  • 问题内容: 我正在使用Newtonsoft.Json程序集将Json字符串反序列化为动态对象(ExpandoObject)。我遇到的问题是int值始终以我期望的Int32形式返回为Int64。该代码可以在下面看到。 通常我不会注意到这一点,但是这个特殊的int被用于某种类型检查的反映,并且失败了。任何想法为什么会发生这种情况将不胜感激。 问题答案: 释义: 作者有意选择将所有int都返回,以避免溢

  • 函数的返回值是指函数被调用之后,执行函数体中的代码所得到的结果,这个结果通过 return 语句返回。 return 语句的一般形式为: 或者: 有没有 都是正确的,为了简明,一般也不写 。例如: 对C语言返回值的说明: 1) 没有返回值的函数为空类型,用 表示。例如: 一旦函数的返回值类型被定义为 void,就不能再接收它的值了。例如,下面的语句是错误的: 为了使程序有良好的可读性并减少出错,