C ++ STL容器集& multiset:具有不同返回类型的插入操作

时间:2012-04-14 01:07:39

标签: c++ stl set containers

关于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函数只返回一个迭代器。如果插入失败会发生什么?有人能说出来吗?我呢? 非常感谢。

1 个答案:

答案 0 :(得分:1)

  

但是在set的第二个函数中,insert函数只返回一个迭代器。如果插入失败会发生什么?

在仅返回普通set::insert(而不是iterator)的pair<iterator,bool>版本中,当找到现有元素时,该集合保持不变且insert将返回一个迭代器到现有元素(阻止插入)。

multiset::insert中,该功能始终成功。

23.2.4关联容器要求

iterator a.insert(p, t)

  

效果:当且仅当没有带键的元素时才插入t   相当于具有唯一键的容器中的t键;总是   将t插入具有等效键的容器中。总是回来的   指向元素的迭代器,其键等价于t的键。   t尽可能靠近p。

之前的位置插入