C++范围是不错的,但是AFAIK他们仍然“痛苦”于他们不知道修改容器的事实,例如,如果你使用ranges::remove,你仍然需要做container.erase(...
现在有一些算法知道如何从容器(std::erase,std::erase_if)中擦除,但与范围不同的是,它们不支持投影。
我的问题是,这是否仅仅是因为(AFAIK)该功能是与范围分开提出的(+缺乏时间/缺乏建议),还是存在该功能不可用的根本原因。
发布于 2021-07-20 00:18:20
std::erase和std::erase_if不是适用于任何容器的算法。它们是一组重载的函数,对许多容器执行“相同的事情”。
关联容器没有std::erase,因为它要么与它们的成员erase不一致,要么与序列容器erase不一致。
我不认为在erase_if中有投影参数有本质上的不兼容性,也不认为在erase中有投影参数是不兼容的,但它们是根据现有的std::remove,std::remove_if和成员erase和remove来定义的,它们缺乏投影。
https://stackoverflow.com/questions/68443552
复制相似问题