地图透明比较器::擦除

问题描述 投票:0回答:1

C++14 标准为

std::map::find
std::map::count
std::map::equal_range
以及上限和下限函数提供了透明比较器:基本上是执行键查找的所有函数。

是否有某种原因导致

std::map::erase(const key_type&)
对于透明比较器没有类似的过载? 是故意遗漏的,还是只是一个疏忽?

c++ c++14
1个回答
0
投票

差不多 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 实例的情况下调用此函数。

© www.soinside.com 2019 - 2024. All rights reserved.