您现在的位置是:主页 > news > 制作公司网站源代码怎么弄/百度平台交易
制作公司网站源代码怎么弄/百度平台交易
admin2025/5/12 21:48:11【news】
简介制作公司网站源代码怎么弄,百度平台交易,广告策划书目录,新农村基础设施建设网站函数对象 1,重载函数调用操作符的类,其对象常称为函数对象 2,仿函数,函数对象使用重载的()时,行为类似函数调用,也叫仿函数 注意:函数对象不是一个函数而是一个类。 函数…
制作公司网站源代码怎么弄,百度平台交易,广告策划书目录,新农村基础设施建设网站函数对象 1,重载函数调用操作符的类,其对象常称为函数对象 2,仿函数,函数对象使用重载的()时,行为类似函数调用,也叫仿函数 注意:函数对象不是一个函数而是一个类。 函数…
函数对象
1,重载函数调用操作符的类,其对象常称为函数对象
2,仿函数,函数对象使用重载的()时,行为类似函数调用,也叫仿函数
注意:函数对象不是一个函数而是一个类。
函数对象的使用
a,函数对象在使用时,可以像普通函数那样调用,可以有参数可以有返回值
b,函数对象超出普通函数的概念,函数对象可以有自己的状态
c,函数对象可以作为参数传递
#include<iostream>using namespace std;class myadd
{
public:int operator()(int v1,int v2){return v1 + v2;}};
class myadd2
{
public:myadd2(){this->count = 0;}void operator()(string str){cout << str << endl;this->count++;}int count;
};
void test1()
{//函数对象在使用时,可以像普通函数那样调用,可以有参数可以有返回值myadd p;cout << p(10, 10) << endl;
}void doprint(myadd2& p, string test)
{p(test);}
void test3()
{//函数对象可以作为参数传递myadd2 p;doprint(p,"hellop");
}
void test2()
{//函数对象超出普通函数的概念,函数对象可以有自己的状态myadd2 p;p("hello\n");p("hello\n");p("hello\n");p("hello\n");cout << p.count << endl;}int main()
{test1();test2();test3();return 0;
}
谓词
1,返回bool类型的仿函数称为谓词
2,如果operator()接受一个参数,叫做一元谓词
3,如果operator()接受两个参数,叫做二元谓词
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;class mycom
{
public:bool operator()(int val){return val > 6;}};void test()
{vector<int> vec;for (int i = 0; i <= 10; i++){vec.push_back(i);}vector<int>::iterator it = find_if(vec.begin(), vec.end(), mycom());if (it == vec.end()){cout << "not found" << endl;}else{cout <<"found" << endl;}}int main()
{test();return 0;
}
二元谓词
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;class mycom
{
public:bool operator()(int val){return val > 6;}};void test()
{vector<int> vec;for (int i = 0; i <= 10; i++){vec.push_back(i);}vector<int>::iterator it = find_if(vec.begin(), vec.end(), mycom());if (it == vec.end()){cout << "not found" << endl;}else{cout <<"found" << endl;}}class mycompare
{
public:bool operator()(int val1,int val2){return val1 > val2;}};
void test01()
{vector<int> vec;vec.push_back(10);vec.push_back(20);vec.push_back(30);vec.push_back(40);vec.push_back(50);vector<int>::iterator it = vec.begin();for (; it != vec.end(); it++){cout << *it << endl;}sort(vec.begin(),vec.end(),mycompare());it = vec.begin();for (; it != vec.end(); it++){cout << *it << endl;}}int main()
{test01();return 0;
}