0

我正在使用 multimap 来存储值。我只想在插入多图时检查该值是成功还是失败。

我正在尝试使用以下代码

if (MultiMap.insert(TypeDefMap::value_type(Id, ans)))
  return 1;
else
  return 0;

但这给出了标量类型预期的错误。

我想我在这里遗漏了一些愚蠢的东西。我尝试将类型转换为 int 和 bool 但没有奏效。

有什么建议么?

4

4 回答 4

2

根据文档(多图insert方法)

在返回值的版本中,这是一个迭代器,指向多图中新插入的元素。

您应该检查该迭代器 != end() 是否表示成功,否则表示失败。

于 2011-05-18T10:55:50.620 回答
1

唯一可能失败的两件事std::mutlimap::insert是:

  • 分配失败,但这会引发std::bad_alloc异常。
  • key 的比较器会引发异常,但会传播该异常。

(加上一些未定义的行为,例如在未初始化的实例/错误指针/...上调用它,但这可能会给您带来分段错误)。由于两者都没有返回任何内容,因此检查它是否成功是没有意义的。

于 2011-05-18T11:03:57.990 回答
0

multimap::insert 返回一个指向新插入元素的迭代器。

于 2011-05-18T10:54:52.370 回答
0

尝试使用

if(MultiMap.insert(TypeDefMap::value_type(Id, ans)) == MultiMap.end())
    返回失败
别的
    返回成功

从 map/set/multimap/multiset 的任何返回,如果是迭代器,如果无效,它应该等于 end()。

于 2011-05-18T10:58:47.987 回答