【问题标题】:C++ STL container set&multiset:the insert operation with different return typesC++ STL容器set&multiset:不同返回类型的插入操作
【发布时间】:2012-04-14 01:07:39
【问题描述】:

关于STL容器set和multiset,insert函数的返回类型并不完全相同。 set 提供如下接口:

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);

set的第一个函数中,pair结构的成员second返回插入是否成功。插入一个元素如果一个集合已经包含一个具有相同值的元素,它可能会失败。但是在 set 的第二个函数中,插入函数只返回一个迭代器。如果插入失败会发生什么?有人能告诉我那个? 非常感谢。

【问题讨论】:

    标签: c++ stl set containers


    【解决方案1】:

    但是在set的第二个函数中,insert函数只是返回了一个迭代器,如果插入失败会怎样?

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

    在multiset::insert中,函数总是成功的。

    23.2.4 关联容器要求

    iterator a.insert(p, t)

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

    【讨论】:

      猜你喜欢
      • 2023-03-24
      • 2013-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-01
      相关资源
      最近更新 更多