c++中for_each 函數(shù)如何使用,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),徽州企業(yè)網(wǎng)站建設(shè),徽州品牌網(wǎng)站建設(shè),網(wǎng)站定制,徽州網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,徽州網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
for_each()事實(shí)上是個 function template,其源碼如下
link:http://www.cplusplus.com/reference/algorithm/for_each/?kw=for_each
template<typename InputIterator, typename Function>
Function for_each(InputIterator beg, InputIterator end, Function f) {
while(beg != end)
f(*beg++);
}
能看懂吧?。。?br/>
例如:
// for_each example
#include <iostream> // std::cout
#include <algorithm> // std::for_each
#include <vector> // std::vector
void myfunction (int i) { // function:
std::cout << ' ' << i;
}
struct myclass { // function object type:
void operator() (int i) {std::cout << ' ' << i;}
} myobject;
int main () {
std::vector<int> myvector;
myvector.push_back(10);
myvector.push_back(20);
myvector.push_back(30);
std::cout << "myvector contains:";
for_each (myvector.begin(), myvector.end(), myfunction);
std::cout << '\n';
// or:
std::cout << "myvector contains:";
for_each (myvector.begin(), myvector.end(), myobject);
std::cout << '\n';
return 0;
}
結(jié)果:
myvector contains: 10 20 30
myvector contains: 10 20 30
foreach其他用法:https://www.cnblogs.com/zhangkele/p/9373063.html
2. C++11之for循環(huán)的新用法
C++使用如下方法遍歷一個容器:
遍歷vector容器
#include<iostream>
#include<vector>
int main()
{
std::vector<int> arr;
arr.push_back(1);
arr.push_back(2);
for (auto it = arr.begin(); it != arr.end(); it++)
{
std::cout << *it << std::endl;
}
return 0;
}
其中auto用到了C++11的類型推導(dǎo)。同時我們也可以使用std::for_each完成同樣的功能:
#include<algorithm>
#include<iostream>
#include<vector>
void func(int n)
{
std::cout << n << std::endl;
}
int main()
{
std::vector<int> arr;
arr.push_back(1);
arr.push_back(2);
std::for_each(arr.begin(), arr.end(), func);
return 0;
}
現(xiàn)在C++11的for循環(huán)有了一種新的用法:
#include<iostream>
#include<vector>
int main()
{
std::vector<int> arr;
arr.push_back(1);
arr.push_back(2);
for (auto n : arr)
{
std::cout << n << std::endl;
}
return 0;
}
上述方式是只讀,如果需要修改arr里邊的值,可以使用for(auto& n:arr),for循環(huán)的這種使用方式的內(nèi)在實(shí)現(xiàn)實(shí)際上還是借助迭代器的,所以如果在循環(huán)的過程中對arr進(jìn)行了增加和刪除操作,那么程序?qū)Τ霈F(xiàn)意想不到的錯誤。
遍歷map映射容器 三種方式
map<int, string> m;
// 1
for ( auto &v : m)
{
cout<<v.first<<" "<<v.second<<endl;
}
// 2 lamda表達(dá)式
for_each(m.begin(),m.end(),[](map<int,string>::reference a){
cout<<a.first<<" "<<a.second<<endl;
});
// 3 for_each
void fun(map<int,string>::reference a) //不要少了reference,不然會報錯。
{
cout<<a.first<<" "<<a.second<<endl;
}
for_each(m.begin(),m.end(),fun);
還有一種宏定義的方法實(shí)現(xiàn)foreach循環(huán):
//定義
#define foreach(container,it) \
for(typeof((container).begin()) it = (container).begin();it!=(container).end();++it)
//輸出
foreach(m,it)
{
cout<<it->first<<","<<it->second<<endl;
}
看完上述內(nèi)容,你們掌握c++中for_each 函數(shù)如何使用的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
網(wǎng)頁題目:c++中for_each函數(shù)如何使用
文章出自:http://bm7419.com/article2/jddjic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、網(wǎng)站設(shè)計公司、小程序開發(fā)、標(biāo)簽優(yōu)化、外貿(mào)建站、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)