问题描述
C++ 范围很好,但 AFAIK 他们仍然“受苦”,因为他们不知道修改容器,例如如果你使用 ranges::remove
你仍然需要做 container.erase(...
现在有一些算法知道如何从容器(std::erase
、std::erase_if
)中擦除,但与范围不同的是,它们不支持投影。
我的问题是,这是否仅仅是因为 (AFAIK) 该功能是与范围分开提出的(+ 缺乏时间/缺乏建议),还是该功能不可用的根本原因。
解决方法
to_sum
和 std::erase
不是适用于任何容器的算法。它们是一组对许多容器执行“相同操作”的重载函数。
关联容器没有 std::erase_if
,因为它要么与其成员std::erase
不一致,要么与序列容器{{1}不一致}}。
我不认为在 erase
或 erase
中存在投影参数存在根本的不兼容,但它们是根据现有的 {{1} }、erase_if
和成员 erase
和 std::remove
,缺少投影。