c 練習 函式物件程式設計 發現富豪

2021-09-29 13:50:57 字數 1740 閱讀 9972

題目:

從billionaires中找到中國38~45歲 的億萬富翁!

要求:

1、讀取2進製檔案billion.bin,形成乙個vector的容器內容。

2、使用for_each遍歷vector容器內所有元素,呼叫find_billion(「china」, 38, 45),列印出滿足要求的所有富翁。

3、上述find_billion是乙個函式物件。

資料結構:

billion.bin是struct billion的2進製儲存,billion的定義為:

struct billion ;

檔案:

billion.bin

對二進位制檔案的讀寫主要用istream類的成員函式read和write來實現。

這兩個成員函式的原型為:

istream& read(char *buffer,int len);

ostream& write(const char * buffer,int len);

思路:

1.讀取二進位制檔案,按struct大小取出,存入vector容器中

2.編寫find_billion()函式

3.將find_billion()作為函式物件傳入for_each中

#include#include#include#include#include#includeusing namespace std;

struct billion ;

ostream& operator<<(ostream& os,billion &b)

void operator()(billion b);

in.close();

//驗證vector中內容:

//copy(v.begin(),v.end(),ostream_iterator(cout,"\n"));

/*vector::iterator it=v.begin();

for(;it!=v.end();it++){

cout<<*it《輸出:

174 liu qiangdong $7.7 b 43 e-commerce china

261 yan zhi $5.7 b 44 real estate china

427 xu bo $4.1 b 39 mobile games china

441 jason jiang $4 b 44 advertising china

474 jia yueting $3.8 b 44 online video china

603 nie tengyun $3.2 b 41 logistics china

814 wang xing $2.5 b 44 e-commerce china

939 fang wei $2.2 b 44 steel c

問題:

copy(v.begin(),v.end(),ostream_iterator(cout,"\n"));

error:'ostream_iterator' was not declared in this scope

-->沒要包含所需的標頭檔案

解決:在標頭檔案中加入 iterator 這個標頭檔案 --> #includecopy函式需要標頭檔案:iterator algorithm

C 物件導向程式設計上機練習一(函式過載)

time limit 1000ms memory limit 65536kb submit statistic problem description 利用陣列和函式過載求5個數最大值 分別考慮整數 單精度 長整數的情況 input 分別輸入5個int型整數 5個float 型實數 5個long型正...

c 程式設計練習 037 函式物件的過濾器

北大程式設計與演算法 三 測驗題彙總 2020春季 程式填空輸出指定結果 include include using namespace std struct a a int n v n bool operator const a a const 在此處補充你的 template void prin...

物件導向程式設計練習

1 程式設計題 設計乙個使用者類user,類中的變數有使用者名稱 密碼和記錄使用者數量的變數,定義3個構造方法 無參的 為使用者名稱賦值的 為使用者名稱和密碼賦值的,還有獲取和設定密碼的方法和返回類資訊的方法。public class user 定義無參方法 2 程式設計題 設計一副牌poker的外...