代码之家  ›  专栏  ›  技术社区  ›  João Paulo

新的STD::MAP:Erase[())签名C++ 17

  •  29
  • João Paulo  · 技术社区  · 8 年前

    根据 this answer ,一个 iterator 必须隐式转换为 const_iterator . 因为这是真的,正如我们可以看到的那样 insert_or_assign() ,为什么在C++ 17中添加了一个新的签名 std::map::erase() ?

    在C++ 11中,我们有 iterator erase( const_iterator pos );

    在C++ 17中,我们现在有 iterator erase( iterator pos );

    C++ 11的签名不是很好接收吗? 迭代器 和 常量迭代器 ?

    1 回复  |  直到 8 年前
        1
  •  26
  •   T.C. Yksisarvinen    8 年前

    有一个潜在的模棱两可 erase(const key_type& key) 当你经过一个 iterator . 考虑以下情况 key_type 有点像 std::any .