Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如果需要,为什么需要删除\u复制\u?_C++_C++11 - Fatal编程技术网

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));