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一元操作签名的主要内容,如果未能解决你的问题,请参考以下文章
应用`std::transform()`函数后向量元素的意外行为[重复]