故城县网站建设服务汕头网站排名优化报价
故城县网站建设服务,汕头网站排名优化报价,高端定制网站建设公司,单页网站QQ空间函数对象 一种提供有函数调用运算符的类。 当编译器遇到了一个函数调用#xff0c;比如lt(ival);,lt可能是个函数名、函数指针、提供了函数调用运算符的的函数对象#xff1b; 如果lt是个类对象#xff0c;那么编译器会在内部将此语句转换为lt.operator(ival); 函数调用运…函数对象 一种提供有函数调用运算符的类。 当编译器遇到了一个函数调用比如lt(ival);,lt可能是个函数名、函数指针、提供了函数调用运算符的的函数对象 如果lt是个类对象那么编译器会在内部将此语句转换为lt.operator(ival); 函数调用运算符可以接受任意个参数。使用举例它可被用来支持矩阵(Matrix这个类的多维度下标操作因为语言所提供的下标运算符仅能接受一个参数。
//测试传入值是否小于指定值的实现class LessThan
{
public:LessThan(int val):_val(val){};int comp_val()const{return _val; //基值的读取}void comp_val(int nval){_valnval; //基值的写入}bool operator()(int value) const;private:int _val;
};//函数调用运算符的实现如下
inline bool LessThan::operator()(int value) const
{return value_val;
}//将函数调用运算符应用于对象身上便可以调用函数调用运算符
int count_less_than(const vectorintvec,int comp)
{LessThan lt(comp);int count0;for(int ix0;ixvec.size();ix)if(lt( vec[ix] ))count;return count;
}//通常我们会把函数对象当作参数传给泛型算法例如
void print_less_than(const vectorintvec,int comp,ostream os)
{LessThan lt(comp);vectorint::const_iterator iter vec.begin(),it_endvec.end();oselemts less than lt.comp_val()endl;while((iter find_if(iter,it_end,lt)) ! it_end){os *iter ;iter;}
}//练习以上两个函数
int main()
{int ia[16]{17, 12, 44, 9, 18, 45, 6, 14, 23, 67, 9, 0, 27, 55, 8, 16};vectorintvec(ia, ia16);int comp_val20;cout Numeber of elements less than comp_val are count_less_than(vec,comp_val) endl;print_less_than(vec,comp_val);
}//执行结果
//Numeber of elements less than 20 are 10
//elements less than 20
//17 12 9 18 6 14 9 0 8 16
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/88915.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!