2

C++ 范围很好,但是 AFAIK 他们仍然“受苦”,因为他们不知道修改容器,例如,如果你使用ranges::remove你仍然需要做container.erase(...

现在有些算法确实知道如何从容器中擦除(std::erase, std::erase_if),但与范围不同,它们不支持投影。

我的问题是否仅仅是因为(AFAIK)该功能是与范围分开提出的(+缺乏时间/缺乏建议),或者是否存在此功能不可用的根本原因。

4

1 回答 1

3

std::erase并且std::erase_if不是适用于任何容器的算法。它们是一组对许多容器执行“相同操作”的重载函数。

关联容器没有 std::erase,因为它要么与它们的成员不一致,要么erase与序列容器不一致erase

我不认为有一个投影参数存在根本的不兼容erase_if,也没有在erase它存在的地方,但它们是根据现有的std::removestd::remove_if和成员erases 和removes 定义的,它们缺乏投影。

于 2021-07-19T16:18:20.007 回答