91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c++中for_each 函數如何使用

發布時間:2021-07-06 17:21:47 來源:億速云 閱讀:359 作者:Leah 欄目:互聯網科技

c++中for_each 函數如何使用,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

for_each()事實上是個 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++);
}
能看懂吧!!!
 

例如:

// 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;
}

結果:
myvector contains: 10 20 30
myvector contains: 10 20 30
 

foreach其他用法:https://www.cnblogs.com/zhangkele/p/9373063.html

2. C++11之for循環的新用法
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的類型推導。同時我們也可以使用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;
}
 

現在C++11的for循環有了一種新的用法:

#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循環的這種使用方式的內在實現實際上還是借助迭代器的,所以如果在循環的過程中對arr進行了增加和刪除操作,那么程序將對出現意想不到的錯誤。

遍歷map映射容器 三種方式

map<int, string> m;
 // 1
for (    auto &v : m)  
     {
         cout<<v.first<<" "<<v.second<<endl;
    }

 // 2 lamda表達式
 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);
 

還有一種宏定義的方法實現foreach循環:

//定義
#define foreach(container,it) \
    for(typeof((container).begin()) it = (container).begin();it!=(container).end();++it)
//輸出
foreach(m,it)
    {
        cout<<it->first<<","<<it->second<<endl;
    }

看完上述內容,你們掌握c++中for_each 函數如何使用的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

永康市| 荣昌县| 丰镇市| 闸北区| 仙游县| 丁青县| 星座| 枣强县| 建宁县| 商河县| 四川省| 嘉兴市| 肇源县| 米泉市| 青川县| 富民县| 玉田县| 永新县| 平舆县| 永仁县| 凤冈县| 久治县| 同心县| 横山县| 广汉市| 云和县| 金华市| 融水| 蓝田县| 梅州市| 广东省| 新巴尔虎左旗| 鄂托克前旗| 高邑县| 蒲江县| 泰安市| 唐海县| 平果县| 琼中| 西平县| 法库县|