gpt4 book ai didi

c++ - copy_if 算法在这里值得吗?

转载 作者:搜寻专家 更新时间:2023-10-31 02:23:41 24 4
gpt4 key购买 nike

我有一些类的以下方法,它还定义了 isAllowed 方法:

auto filter(const auto& in)
{
auto ret = decltype(in) {};
for(auto x : in)
if(isAllowed(x))
ret.insert(x);
return ret;
}

这是一个明显的例子,可以使用 copy_if 代替。我看到两个替代版本:

auto filter(const auto& in)
{
auto ret = decltype(in) {};
copy_if(begin(in), end(in),
inserter(ret, end(ret)),
[this](auto i) {return this->isAllowed(i);});
return ret;
}

auto filter(const auto& in)
{
auto ret = decltype(in) {};
copy_if(begin(in), end(in),
inserter(ret, end(ret)),
bind1st(mem_fn(&A::isAllowed), this)); // I believe this is deprecated
return ret;
}

两者看起来都没有原来那么明显,所以我倾向于保留 for 循环。有强烈的理由不这样做吗? (还有更好的方法吗?)

否则,我会感到很痒,因为尽管有最佳实践建议,但像这样的案例表明算法工具的用处有限。

最佳答案

我同意这是一个见仁见智的问题;但在看来,基于算法的更清晰,因为名称copy_if 清楚地表明了您要完成的任务。

你(有条件地)复制了一堆东西。

关于c++ - copy_if 算法在这里值得吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29035625/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com