href="file:///c:/docume~1/admini~1/locals~1/temp/msohtml1/01/clip_filelist.xml" rel="file-list" />
有乙個使用者資訊類
cuserinfo
,包括乙個類成員函式
initdatd
(用於初始化使用者資料),**如下:
class
cuserinfo
};
假設有乙個列表存放所有的使用者資料:
std::listuserlists;
我們需要定期的對
userlists
的所有使用者做一次初始化操作,也即是呼叫類成員函式cuserinfo::initdata;
普通利用for迴圈實現要求
正常來講,很多人(包括我在內)可能第一時間會想到使用
for迴圈,下面給出例子**;
std::list::iterator iter;
for (iter=userlists.begin(); iter!=userlists.end(); iter++)
使用for
迴圈確實可以實現要求,但很多
c++專家、程式設計手冊和歷史經驗告訴我們,「在處理stl容器的時候,盡量不要自己寫迴圈;」「演算法函式優先使用於迴圈;」「…」
同樣我也推薦使用下面的
std::for_each
和std::mem_fun_ref
方案。
使用std::mem_fun_ref函式利用
std::for_each
和std::mem_fun_ref
同樣可以實現我們想要的功能,**如下:
for_each(userlists.begin(), userlists.end(), std::mem_fun_ref(&cuserinfo::initdata));
「什麼?」「不可能!」「只有一行**?」
「是的,沒錯!」「只有一行**。」
使用std::mem_fun函式
或許有些人會問,那
mem_fun
怎麼用?用在**?
而有些人會問,如果我是存的
cuserinfo*
,怎麼處理?
其實你們問的也就是下面我要給出的這段**,解決的問題;
std::listuserlists;
for_each(userlists.begin(), userlists.end(), std::mem_fun(&cuserinfo::initdata));
總結
std::mem_fun
和std::mem_fun_ref
所實現的是相同的功能,可以這麼理解之間的差異,mem_fun用於處理容器物件指標,而mem_fun_ref用於處理容器物件實體。
MySQL使用學習使用 mysql學習使用
1 mysql學習 1 安裝 ubuntu下直接安裝 apt get install mysql server 2 檢查伺服器是否啟動 sudo netstat tap grep mysql,如果啟動成功,出現以下資訊 tcp00localhost.localdomain mysql listen ...
學習使用CSDN markdown使用
建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...
學習使用PIVOT
假設有這樣的乙個需求 有乙個表中儲存了某個部門的各個員工的每一年的各類薪金,記錄儲存格式如 員工姓名 薪金數目 薪金種類 年份 現在要求根據員工的姓名進行查詢,查詢出某些員工各個年份的薪金總數,出來的結果要求 columnname 年份 員工1姓名 員工2姓名 columnvalue 年份 薪金總數...