C ++ Multimap插入函数

时间:2011-05-18 10:51:57

标签: c++ map multimap

我使用multimap来存储值。我只是想在插入multimap时检查,如果值是成功或失败。

我正在尝试使用以下代码

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

但是这给出了标量类型所期望的错误。

我想我在这里错过了一些愚蠢的东西。我尝试对int和bool进行类型转换,但是没有用。

有什么建议吗?

4 个答案:

答案 0 :(得分:2)

根据文档(multimap insert方法)

  

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

你应该检查iterator!= end()是否意味着成功,否则就是失败。

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

尝试使用

if(MultiMap.insert(TypeDefMap::value_type(Id, ans)) == MultiMap.end())
    return FAILURE
else
    return SUCCESS

map / set / multimap / multiset中的任何返回,如果是iterator,如果无效,则应该等于end()。