关于STL容器设置和 multiset ,插入功能的返回类型并不完全相同。 设置提供以下界面:
pair<iterator,bool> insert(const value_type& elem);
iterator insert(iterator pos_hint, const value_type& elem);
multiset 提供以下界面:
iterator insert(const value_type& elem);
iterator insert(iterator pos_hint, const value_type& elem);
在设置的第一个函数中,对结构的成员 second 返回插入是否成功。插入元素如果它已经包含一个具有相同值的元素,则可能会失败。但是在 set 的第二个函数中,insert函数只返回一个迭代器。如果插入失败会发生什么?有人能说出来吗?我呢? 非常感谢。
答案 0 :(得分:1)
但是在set的第二个函数中,insert函数只返回一个迭代器。如果插入失败会发生什么?
在仅返回普通set::insert
(而不是iterator
)的pair<iterator,bool>
版本中,当找到现有元素时,该集合保持不变且insert
将返回一个迭代器到现有元素(阻止插入)。
在multiset::insert
中,该功能始终成功。
iterator a.insert(p, t)
效果:当且仅当没有带键的元素时才插入t 相当于具有唯一键的容器中的t键;总是 将t插入具有等效键的容器中。总是回来的 指向元素的迭代器,其键等价于t的键。 t尽可能靠近p。
之前的位置插入