我使用multimap来存储值。我只是想在插入multimap时检查,如果值是成功或失败。
我正在尝试使用以下代码
if (MultiMap.insert(TypeDefMap::value_type(Id, ans)))
return 1;
else
return 0;
但是这给出了标量类型所期望的错误。
我想我在这里错过了一些愚蠢的东西。我尝试对int和bool进行类型转换,但是没有用。
有什么建议吗?
答案 0 :(得分:2)
根据文档(multimap insert
方法)
在返回值的版本中, 这是一个指向它的迭代器 新插入的元素 多重映射。
你应该检查iterator!= end()是否意味着成功,否则就是失败。
答案 1 :(得分:1)
std::mutlimap::insert
中唯一可能失败的两件事是:
std::bad_alloc
异常。(加上一些未定义的行为,比如在未初始化的实例/坏指针/ ...上调用它,但这可能会给你一个分段错误)。由于两者都没有返回任何内容,因此检查它是否成功是没有意义的。
答案 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()。