C++14 标准为
std::map::find
、std::map::count
、std::map::equal_range
以及上限和下限函数提供了透明比较器:基本上是执行键查找的所有函数。
是否有某种原因导致
std::map::erase(const key_type&)
对于透明比较器没有类似的过载? 是故意遗漏的,还是只是一个疏忽?
差不多 10 年后,c++23 终于添加了这个
erase
重载。
来自 std::map 参考
template< class K > size_type erase( K&& x );
(C++23 起)
删除所有键与值 x 比较的元素。仅当限定 ID Compare::is_transparent 有效并表示类型,并且 iterator 和 const_iterator 都不能从 K 隐式转换时,此重载才参与重载决策。它允许在不构造 Key 实例的情况下调用此函数。