- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一些类的以下方法,它还定义了 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/
我正在生成代码,其中我恰好将 n 个单词从一个内存位置复制到另一个非重叠内存位置。 n 是静态已知的。 目前,我发出大量加载指令,然后是大量存储指令,但我怀疑从 n 的某个值开始,调用 memcpy会
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
用例如下: 我有一张 map ,其中将插入一些键/值。 该程序将查询该 map ,但是在第一个查询之后,我可以保证该 map 将完全不会被修改。 因为查询的结果完全是输入的函数,所以在查询方法上放置属
Helo 伙计们,我尝试使用 Refs 并在他的内部提供 this.setState 但它给出: Maximum update depth exceeded. This can happen when
在检查事件时,使用带有 switch 或 if 的代码块是很常见的事情。如果变得简单,它可以是干净的代码,但似乎仍然有比需要更多的行,并且可以使用 lambda 进行简化。 用 if 阻止: if(a
Amazon 最近宣布在其 RDS 产品线中支持 Oracle: http://aws.amazon.com/rds/oracle/ 我想知道是否有人使用过它,或者是否有令人信服的理由将我的数据从 M
我是一名优秀的程序员,十分优秀!