新的 std::map::erase() 签名 C++17.



根据这个答案,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签名还不够好,可以接受iteratorconst_iterator吗?

当您通过iterator时,erase(const key_type& key)可能存在歧义。考虑一下key_type类似于std::any的情况。

最新更新