我正在使用 multimap 来存储值。我只想在插入多图时检查该值是成功还是失败。
我正在尝试使用以下代码
if (MultiMap.insert(TypeDefMap::value_type(Id, ans)))
return 1;
else
return 0;
但这给出了标量类型预期的错误。
我想我在这里遗漏了一些愚蠢的东西。我尝试将类型转换为 int 和 bool 但没有奏效。
有什么建议么?
根据文档(多图insert
方法)
在返回值的版本中,这是一个迭代器,指向多图中新插入的元素。
您应该检查该迭代器 != end() 是否表示成功,否则表示失败。
唯一可能失败的两件事std::mutlimap::insert
是:
std::bad_alloc
异常。(加上一些未定义的行为,例如在未初始化的实例/错误指针/...上调用它,但这可能会给您带来分段错误)。由于两者都没有返回任何内容,因此检查它是否成功是没有意义的。
multimap::insert 返回一个指向新插入元素的迭代器。
尝试使用
if(MultiMap.insert(TypeDefMap::value_type(Id, ans)) == MultiMap.end()) 返回失败 别的 返回成功
从 map/set/multimap/multiset 的任何返回,如果是迭代器,如果无效,它应该等于 end()。