首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么std::erase和std::erase_if不支持投影?

为什么std::erase和std::erase_if不支持投影?
EN

Stack Overflow用户
提问于 2021-07-19 23:56:32
回答 1查看 134关注 0票数 2

C++范围是不错的,但是AFAIK他们仍然“痛苦”于他们不知道修改容器的事实,例如,如果你使用ranges::remove,你仍然需要做container.erase(...

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

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

EN

回答 1

Stack Overflow用户

发布于 2021-07-20 00:18:20

std::erasestd::erase_if不是适用于任何容器的算法。它们是一组重载的函数,对许多容器执行“相同的事情”。

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

我不认为在erase_if中有投影参数有本质上的不兼容性,也不认为在erase中有投影参数是不兼容的,但它们是根据现有的std::removestd::remove_if和成员eraseremove来定义的,它们缺乏投影。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68443552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档