c++什么叫一元函数,二元函数?

时间:2022-10-21 04:19:01
绑定器:bind1st 将给定值绑定到二元函数对象的第一个实参?

        bind2ed 将给定值绑定到二元函数对象的第二个实参?

绑定器:它通过将一个操作数绑定到给定值而将二元函数对象转换为一元函数对象?  啥意思啊。。。

9 个解决方案

#1


一元 就是操作数只有一个的 如 ++c c++ []  

二元 就是操作数有两个的如 + - * /

三元 ?:

楼主去将primer 第五章前面几页重新看看吧 没什么玄妙的

#2


一元函数就是只有一个参数的函数。二元函数就是有两个参数的函数。

#3


元指函数参数的个数

#4


引用 2 楼 jim_king_2000 的回复:
一元函数就是只有一个参数的函数。二元函数就是有两个参数的函数。


就是这样,就是字面意思

#5


bind1st和bind2nd函数用于将一个二元算子(binary functor,bf)转换成一元算子(unary functor,uf)。为了达到这个目的,它们需要两个参数:要转换的bf和一个值(v)。举例如下所示:

我们在做比较的时候所写的表达式像 x > k ,x < k,这里的k是一个参数表示你程序里面的表达式要和k值去比较。上面这两个表达式对应的应该是bind2nd ,简单的理解就是把k作为比较表达式的第二个参数。如果使用bind1st则对应的表达式是 k > x,k < x,也就是把k作为比较表达式的第一个参数
int a[] = {1, 2, 100, 200};

std::vector< int> arr(a, a + 4);

// 移除所有小于100的元素

arr.erase( std::remove_if( arr.begin(),  arr.end(),

    std::bind2nd( std::less< int>(), 100)), arr.end());

这里的比较表达式相当于arr.value < 100

如果用bind1st则表达的意思就恰恰相反

#6


不是的,前面全错,函数的一元二元之说没什么意思,照这样说还有3元,四元等等,但是根本没有什么讨论意义.

只有运算符有一元二元之说,运算符的一元二元在考虑运算符重载时有讨论意义.

函数对象也有一元二元之说

注意:函数对象不是函数,而是一个类的对象,只是他的行为与函数类似,不同的函数对象不同的参数个数来初始化.
函数对象讨论一元二元是因为标准库有定义相应的函数\适配器.

#7





一个二元算子(binary functor,bf)转换成一元算子(unary functor,uf)


你好,你的例子, 谁是二元,谁是一元??

我用bind2rd的时候,就没怎么注意这概念,能帮忙解释一下吗?

拿你的例子进行解释,谢谢了啊



引用 5 楼 xiyoulaoyuanjia 的回复:
bind1st和bind2nd函数用于将一个二元算子(binary functor,bf)转换成一元算子(unary functor,uf)。为了达到这个目的,它们需要两个参数:要转换的bf和一个值(v)。举例如下所示:

我们在做比较的时候所写的表达式像 x > k ,x < k,这里的k是一个参数表示你程序里面的表达式要和k值去比较。上面这两个表达式对应的应该是bind2nd ,简单的理……

#8


一元、二元应该是函数参数的个数。比如一个函数如果有一个参数,那么就成为一元函数。数学中的一元函数和这个意思很类似,就是只有一个自变量的函数。

关于函数对象(functor)的概念和例子,请参考:
http://patmusing.blog.163.com/blog/static/13583496020101805359243/

简单地说,函数对象就是可以像函数那样使用的对象。其本质是对象,但能表现出函数那样的行为。

#9


引用 6 楼 wjkdtctorrent 的回复:
不是的,前面全错,函数的一元二元之说没什么意思,照这样说还有3元,四元等等,但是根本没有什么讨论意义.

只有运算符有一元二元之说,运算符的一元二元在考虑运算符重载时有讨论意义.

函数对象也有一元二元之说

注意:函数对象不是函数,而是一个类的对象,只是他的行为与函数类似,不同的函数对象不同的参数个数来初始化.
函数对象讨论一元二元是因为标准库有定义相应的函数\适配器.

这个解释合理,确实是一元函数对象,而不是一元函数。函数对象本质上还是重载操作符。这一就能理解一元 二元的意思了,还是操作符对应操作数的个数。

#1


一元 就是操作数只有一个的 如 ++c c++ []  

二元 就是操作数有两个的如 + - * /

三元 ?:

楼主去将primer 第五章前面几页重新看看吧 没什么玄妙的

#2


一元函数就是只有一个参数的函数。二元函数就是有两个参数的函数。

#3


元指函数参数的个数

#4


引用 2 楼 jim_king_2000 的回复:
一元函数就是只有一个参数的函数。二元函数就是有两个参数的函数。


就是这样,就是字面意思

#5


bind1st和bind2nd函数用于将一个二元算子(binary functor,bf)转换成一元算子(unary functor,uf)。为了达到这个目的,它们需要两个参数:要转换的bf和一个值(v)。举例如下所示:

我们在做比较的时候所写的表达式像 x > k ,x < k,这里的k是一个参数表示你程序里面的表达式要和k值去比较。上面这两个表达式对应的应该是bind2nd ,简单的理解就是把k作为比较表达式的第二个参数。如果使用bind1st则对应的表达式是 k > x,k < x,也就是把k作为比较表达式的第一个参数
int a[] = {1, 2, 100, 200};

std::vector< int> arr(a, a + 4);

// 移除所有小于100的元素

arr.erase( std::remove_if( arr.begin(),  arr.end(),

    std::bind2nd( std::less< int>(), 100)), arr.end());

这里的比较表达式相当于arr.value < 100

如果用bind1st则表达的意思就恰恰相反

#6


不是的,前面全错,函数的一元二元之说没什么意思,照这样说还有3元,四元等等,但是根本没有什么讨论意义.

只有运算符有一元二元之说,运算符的一元二元在考虑运算符重载时有讨论意义.

函数对象也有一元二元之说

注意:函数对象不是函数,而是一个类的对象,只是他的行为与函数类似,不同的函数对象不同的参数个数来初始化.
函数对象讨论一元二元是因为标准库有定义相应的函数\适配器.

#7





一个二元算子(binary functor,bf)转换成一元算子(unary functor,uf)


你好,你的例子, 谁是二元,谁是一元??

我用bind2rd的时候,就没怎么注意这概念,能帮忙解释一下吗?

拿你的例子进行解释,谢谢了啊



引用 5 楼 xiyoulaoyuanjia 的回复:
bind1st和bind2nd函数用于将一个二元算子(binary functor,bf)转换成一元算子(unary functor,uf)。为了达到这个目的,它们需要两个参数:要转换的bf和一个值(v)。举例如下所示:

我们在做比较的时候所写的表达式像 x > k ,x < k,这里的k是一个参数表示你程序里面的表达式要和k值去比较。上面这两个表达式对应的应该是bind2nd ,简单的理……

#8


一元、二元应该是函数参数的个数。比如一个函数如果有一个参数,那么就成为一元函数。数学中的一元函数和这个意思很类似,就是只有一个自变量的函数。

关于函数对象(functor)的概念和例子,请参考:
http://patmusing.blog.163.com/blog/static/13583496020101805359243/

简单地说,函数对象就是可以像函数那样使用的对象。其本质是对象,但能表现出函数那样的行为。

#9


引用 6 楼 wjkdtctorrent 的回复:
不是的,前面全错,函数的一元二元之说没什么意思,照这样说还有3元,四元等等,但是根本没有什么讨论意义.

只有运算符有一元二元之说,运算符的一元二元在考虑运算符重载时有讨论意义.

函数对象也有一元二元之说

注意:函数对象不是函数,而是一个类的对象,只是他的行为与函数类似,不同的函数对象不同的参数个数来初始化.
函数对象讨论一元二元是因为标准库有定义相应的函数\适配器.

这个解释合理,确实是一元函数对象,而不是一元函数。函数对象本质上还是重载操作符。这一就能理解一元 二元的意思了,还是操作符对应操作数的个数。