- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据http://www.cplusplus.com中的代码
template <class InputIterator, class OutputIterator, class UnaryPredicate>
OutputIterator remove_copy_if (InputIterator first, InputIterator last,
OutputIterator result, UnaryPredicate pred)
{
while (first!=last) {
if (!pred(*first)) {
*result = *first;
++result;
}
++first;
}
return result;
}
template <class InputIterator, class OutputIterator, class UnaryPredicate>
OutputIterator copy_if (InputIterator first, InputIterator last,
OutputIterator result, UnaryPredicate pred)
{
while (first!=last) {
if (pred(*first)) {
*result = *first;
++result;
}
++first;
}
return result;
}
唯一的区别是
if (!pred(*first)) //copy if is if (pred(*first)) {
remove_copy_if 可以使用模拟
copy_if(it1, it2, not1(pred));
那么为什么我们需要 remove_copy_if?
最佳答案
为了了解历史,最好的问题是,为什么我们需要 copy_if
?
如果你看,remove_copy_if
之前是c++11 , 而 copy_if
在 c++11 中首次亮相.
你是对的,仿函数结果的反转是将这两者分开的全部,但正数更容易理解,因此引入了 copy_if
。引用自JaggedSpire's link :
This is a frequently requested addition, mentioned in (for example) the latest edition of The C++ Programming Language. It is formally redundant, since it's just the inverse of
remove_copy_if
: copying all elements that satisfy a predicate p is just the same as not copying all elements that satisfy!p
. It's worth adding anyway. First, C++ isn't really a functional language and transforming a predicate into its negation is sometimes awkward. Second, the workaround of using double negatives is not unconfusing.
关于c++ - 为什么我们需要 remove_copy_if?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41860768/
根据http://www.cplusplus.com中的代码 template OutputIterator remove_copy_if (InputIterator first, Input
我正在尝试使用 vector 将 back_insert_iterator 与 remove_copy_if 结合使用,但我遇到了编译错误。 你知道下面的代码为什么不对吗? #include #in
能否请您向我解释一下我在以下代码中做错了什么?我希望第二个 vector 中的值 >= 80 但它是空的。 #include #include #include using namespace
这可能是 STL 中命名最差的函数吗? (反问) std::remove_copy_if() 实际上似乎没有进行任何删除。据我所知,它的行为更像是 copy_if_not。 否定有点令人困惑,但可以使
我试图找到 copy(copy_if) 和 remove_copy(remove_copy_if) STL 算法之间的任何区别,但似乎没有任何实际区别: Source and destination
我已经制定了一个大部分时间都有效的解决方案: #include #include #include #include // Overload that takes a function poi
我试图将 std::ispunct 作为最后一个参数传递给 remove_copy_if,但发现编译失败。但是,如果我传递 ispunct(只是删除了 std::),程序会按预期编译和运行。 代码:
我是一名优秀的程序员,十分优秀!