日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
函數(shù)對象FunctionObject-創(chuàng)新互聯(lián)

目錄

四方臺網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計等網(wǎng)站項目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)公司從2013年開始到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運(yùn)維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。

一.函數(shù)對象Function Object的原理

二.使用函數(shù)對象的意義

三.實現(xiàn)一個函數(shù)對象Function Object完成容器元素的過濾

四.查找函數(shù)find()和find_if()的區(qū)別:


一.函數(shù)對象Function Bbject的原理

1.函數(shù)對象即為一個重載了括號 " ( ) " 的對象。當(dāng)該對象調(diào)用此操作符時,其表現(xiàn)形式就如同普通函數(shù)的調(diào)用一般。

2.具體實現(xiàn):

①.函數(shù)對象的定義:

class Fuction_object
{
public:
	bool operator() (int _value)
	{
		return val< _value;
	};
private:
	int val;
};

②.函數(shù)對象的調(diào)用:通過定義的類創(chuàng)建函數(shù)對象,再以一般函數(shù)調(diào)用的方式調(diào)用該函數(shù)對象

Function_object F_O(10);
F_O(5);
二.使用函數(shù)對象的意義

1.函數(shù)對象擁有自己的狀態(tài)。程序員可以在類中定義狀態(tài)變量,這樣的一個函數(shù)對象在多次的調(diào)用中可以共享狀態(tài)。(函數(shù)調(diào)用不存在這種優(yōu)勢)

2.函數(shù)對象有自己特有的類型,而普通函數(shù)無類型一說。(通過此特性,在使用STL中的函數(shù)時,可以傳遞相應(yīng)的類型作為參數(shù)來實例化相應(yīng)的模板,從而實現(xiàn)相應(yīng)的功能)

eg:

class Fuction_object
{
public:
	bool operator() (int _value)
	{
		return val< _value;
	};
private:
	int val;
};

int main()
{
Function_object F_O(10);
F_O(5);

int a[5] = {10,2,4,5,9};
vectorvec(a,a+5);

vector::iterator it = vec.begin();

int counts = 0;
while(find_if(it,vec.end(),F_0)!=vec.end()) 
{
  counts++;
  it++;
};

system("pause");
return 0;
}

通過函數(shù)對象作為中函數(shù)sort()的參數(shù)完成對容器中元素的過濾。

三.實現(xiàn)一個函數(shù)對象Function Object完成容器元素的過濾

C++實現(xiàn)代碼:

//function_object.h

#pragma once

#ifndef _FUNCTION_OBJECT_H_
#define _FUNCTION_OBJECT_H_

class LessThan
{
private:
	int _val;
public:
	LessThan(int val) :_val(val) { }
	int comp_val1() const { return _val; }
	void comp_val2(int nval) { _val = nval; }

	bool operator() (int _value) const; //實現(xiàn)函數(shù)對象的根本
};


#endif


//function_object.cpp

#include"function_object.h"

bool LessThan::operator()(int _value)const
{
	return _value< _val; // _val是創(chuàng)建函數(shù)對象時就設(shè)定好的一個右操作數(shù),而_value則是調(diào)用函數(shù)對象時傳入的左操作數(shù)
}

//main.cpp

#include"function_object.h"
#include //find_if()
#include#includeusing namespace std;


int count_less_than(const vector& vec, int comp)
{
	LessThan lt(comp); //創(chuàng)建函數(shù)對象function object

	int counts = 0;

	for (int ix = 0; ix< vec.size(); ix++)
	{
		if (lt(vec[ix]))
		{
			counts++;
		}
	}

	return counts;
}

void print_less_than(const vector& vec, int comp)
{
	LessThan lt(comp);

	vector::const_iterator it = vec.begin();

	cout<< "element less than "<< lt.comp_val1()<< endl;
	while (it != vec.end())
	{
		if ((it = find_if(it, vec.end(), lt)) != vec.end())
		{
			cout<< *it<< " ";
			it++;
		}
	}
}

int main()
{
	int ia[10] = { 17,12,44,27,55,8,23,9,6,14 };
	vectorvec(ia, ia + 10);
	int comp_val = 20;

	cout<< "Number of elements less than "
		<< comp_val<< " are "
		<< count_less_than(vec, comp_val)<< endl;

	print_less_than(vec, comp_val);

	system("pause");
	return 0;
}

_val是創(chuàng)建函數(shù)對象時就設(shè)定好的一個右操作數(shù),而_value則是調(diào)用函數(shù)對象時傳入的左操作數(shù)

bool LessThan::operator()(int _value)const
{
	return _value< _val; 
// _val是創(chuàng)建函數(shù)對象時就設(shè)定好的一個右操作數(shù),而_value則是調(diào)用函數(shù)對象時傳入的左操作數(shù)
}
四.頭文件中的查找函數(shù)find()和find_if()的區(qū)別:

1.find查找函數(shù)原型為find(_InIt _First, const _InIt _Last, const??_Ty& _Val)

其中

first 為迭代器起始位置

last為迭代器起始位置

val為查找數(shù)據(jù)

2.find_if查找函數(shù)原型為find_if(_InIt _First, const _InIt _Last, _Pr _Pred)

其中

first 為迭代器起始位置

last為迭代器起始位置

Pr _Pred是謂詞,需要自己創(chuàng)建(函數(shù)對象經(jīng)常用于此處)

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


網(wǎng)頁標(biāo)題:函數(shù)對象FunctionObject-創(chuàng)新互聯(lián)
當(dāng)前路徑:http://www.dlmjj.cn/article/desphd.html