C++ 如果需要,为什么需要删除\u复制\u?
根据中的代码 如果可以使用C++ 如果需要,为什么需要删除\u复制\u?,c++,c++11,C++,C++11,根据中的代码 如果可以使用 copy_if(it1, it2, not1(pred)); 那么为什么我们需要删除复制如果?只是为了让您了解历史,更好的问题是,为什么我们需要复制如果?? 如果你看的话,它以前就在附近,而它在年首次亮相 你是对的,函子结果的反转是区分这两个结果的唯一方法,但是正数更容易理解,因此如果引入了copy\u。引自: 这是一个经常被要求的添加,在(例如)最新版本的C++程序设计语言中提到。它在形式上是多余的,因为它只是remove\u copy\u if:复制满足谓词p的
copy_if(it1, it2, not1(pred));
那么为什么我们需要删除复制如果?只是为了让您了解历史,更好的问题是,为什么我们需要复制如果?? 如果你看的话,它以前就在附近,而它在年首次亮相 你是对的,函子结果的反转是区分这两个结果的唯一方法,但是正数更容易理解,因此如果引入了
copy\u。引自:
这是一个经常被要求的添加,在(例如)最新版本的C++程序设计语言中提到。它在形式上是多余的,因为它只是
remove\u copy\u if
:复制满足谓词p的所有元素与不复制满足的所有元素是一样的!p
。无论如何,这是值得添加的。首先,C++不是真正的函数语言,把谓语转换成否定句有时是很难的。
第二,使用双重否定的解决方法不是不使用
为了让您了解历史,更好的问题是,如果
,为什么我们需要copy\u?
如果你看的话,它以前就在附近,而它在年首次亮相
你是对的,函子结果的反转是区分这两个结果的唯一方法,但是正数更容易理解,因此如果引入了copy\u。引自:
这是一个经常被要求的添加,在(例如)最新版本的C++程序设计语言中提到。它在形式上是多余的,因为它只是
remove\u copy\u if
:复制满足谓词p的所有元素与不复制满足的所有元素是一样的!p
。无论如何,这是值得添加的。首先,C++不是真正的函数语言,把谓语转换成否定句有时是很难的。
第二,使用双重否定的解决方法不是不使用
简单,为什么呢?这是一个糟糕设计的标志,algos应该基于彼此来实现,而不是通过为每个喷嚏生成大量的数据来实现。copy\u if
实际上是remove\u copy\u if
的反面,它首先被引入:解释了在remove\u copy\u if
之上添加到库中的原因。在remove\u copy\u if(first,last,not(pred))
中引入了copy\u if
来删除双负数。请注意,std::not1
在C++17中被弃用,并且要求其参数中包含一些额外的内容(参数类型
)。然而,这个问题可以用std::notfn来回答。我认为这是一个有益的信息。即使copy_if
被简单地实现为remove_copy_if(it1、it2、not1(pred))
或反之亦然,两者都有价值,因为函数名更好地揭示了意图。理解代码所做的认知努力更少。简单,为什么?设计不好的标志是,算法应该基于彼此来实现,而不是每次打喷嚏都产生大量的结果。copy\u if
实际上与remove\u copy\u if
相反,首先介绍的是:在remove\u copy\u if
上解释将其添加到库中的原因。在remove\u copy\u if(first,last,not(pred))
中引入了copy\u if
来删除双负数。请注意,std::not1
在C++17中被弃用,并且要求其参数中包含一些额外的内容(参数类型
)。然而,这个问题可以用std::notfn来回答。我认为这是一个有益的信息。即使copy_if
被简单地实现为remove_copy_if(it1、it2、not1(pred))
或反之亦然,两者都有价值,因为函数名更好地揭示了意图。理解代码的功能所花费的认知努力更少。
if (!pred(*first)) //copy if is if (pred(*first)) {
copy_if(it1, it2, not1(pred));