std :: transform一元操作签名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了std :: transform一元操作签名相关的知识,希望对你有一定的参考价值。

我对下面的std :: transform的description感到困惑:

unary_op - 将应用的一元操作函数对象。函数的签名应该等同于以下内容:

Ret fun(const Type &a);

签名不需要有const &

这两个陈述似乎是矛盾的。有人可以澄清这里的意思吗?如果签名是Ret fun(Type a)Ret fun(Type&& a)Ret fun(Type& a)会发生什么?

答案

它试图说的是,fun必须是这样的:

*OutputIt = fun(*InputIt);

是合法的。另请注意

unary_op ...不得使任何迭代器无效,包括结束迭代器,或修改所涉及范围的任何元素。

,所以非const引用是合法的 - 但它不能使用非constness。

以上是关于std :: transform一元操作签名的主要内容,如果未能解决你的问题,请参考以下文章

C++ STL transform 函数说明

应用`std::transform()`函数后向量元素的意外行为[重复]

连接一元参数的模板参数包

将 tf::transform 对象写入文件

为啥 std::transform 和类似的东西将“for”循环增量转换为(void)?

使用 std::transform 从特定目标偏移量插入目标