最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++中std::for_each的使用

 更新時(shí)間:2025年04月07日 10:27:12   作者:點(diǎn)云SLAM  
std::for_each是C++標(biāo)準(zhǔn)庫中的一個(gè)算法,用于遍歷容器并對每個(gè)元素執(zhí)行指定的操作,本文就來介紹一下C++中std::for_each的使用,感興趣的可以了解一下

std::for_each的使用

std::for_each 是 C++ 標(biāo)準(zhǔn)庫中的一個(gè)算法,用于遍歷容器并對每個(gè)元素執(zhí)行指定的操作。適用于 std::vector、std::list、std::array 等標(biāo)準(zhǔn)容器。

1. 語法

#include <algorithm>

template<class InputIt, class UnaryFunction>
UnaryFunction for_each(InputIt first, InputIt last, UnaryFunction f);
  • first:起始迭代器(包含)。
  • last:結(jié)束迭代器(不包含)。
  • f:對元素執(zhí)行的函數(shù)對象,接受單個(gè)參數(shù)。

返回值:
返回 f,即傳入的函數(shù)對象(可用于累積狀態(tài))。

2. 基本用法

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};

    // 使用 std::for_each 遍歷并打印元素
    std::for_each(vec.begin(), vec.end(), [](int x) {
        std::cout << x << " ";
    });

    return 0;
}

輸出

1 2 3 4 5

3. 使用普通函數(shù)

#include <iostream>
#include <vector>
#include <algorithm>

// 普通函數(shù)
void printElement(int x) {
    std::cout << x << " ";
}

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};

    std::for_each(vec.begin(), vec.end(), printElement);

    return 0;
}

4. 使用 std::for_each 計(jì)算累積和

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};
    int sum = 0;

    std::for_each(vec.begin(), vec.end(), [&sum](int x) {
        sum += x;
    });

    std::cout << "Sum: " << sum << std::endl;

    return 0;
}

輸出

Sum: 15

這里使用了 Lambda 捕獲 [&sum] 來累加元素值。

5. 使用 std::for_each 修改元素

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};

    // 使用 std::for_each 修改元素
    std::for_each(vec.begin(), vec.end(), [](int &x) {
        x *= 2;
    });

    // 輸出修改后的值
    for (int num : vec) {
        std::cout << num << " ";
    }

    return 0;
}

輸出

2 4 6 8 10

注意:需要傳遞 int &x 才能修改原數(shù)據(jù)。

6. 與 range-based for 循環(huán)對比

使用 for_each 適用于需要函數(shù)對象(如 Lambda 或 functor),但 C++11 之后的 范圍 for 循環(huán) 更簡潔:

for (int &x : vec) {
    x *= 2;
}

相比 std::for_each,范圍 for 在可讀性上更好。

7. for_each 與函數(shù)對象

可以使用自定義仿函數(shù):

#include <iostream>
#include <vector>
#include <algorithm>

struct Multiply {
    void operator()(int &x) const {
        x *= 3;
    }
};

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};

    std::for_each(vec.begin(), vec.end(), Multiply());

    for (int num : vec) {
        std::cout << num << " ";
    }

    return 0;
}

輸出

3 6 9 12 15

仿函數(shù) 適用于復(fù)雜操作或需要在多個(gè)地方復(fù)用時(shí)。

8. 總結(jié)

方法可讀性適用場景
std::for_each適中需要 Lambda、仿函數(shù)或函數(shù)指針
range-based for適用于大多數(shù)遍歷任務(wù)
普通 for 循環(huán)需要索引訪問元素

當(dāng)代碼需要傳遞回調(diào)(如 std::transform 或 std::accumulate 結(jié)合使用)時(shí),std::for_each 更合適,否則推薦 范圍 for 語法。

到此這篇關(guān)于C++中std::for_each的使用的文章就介紹到這了,更多相關(guān)C++ std::for_each內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言實(shí)現(xiàn)掃雷項(xiàng)目

    C語言實(shí)現(xiàn)掃雷項(xiàng)目

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)掃雷項(xiàng)目,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C語言實(shí)現(xiàn)簡易訂餐系統(tǒng)

    C語言實(shí)現(xiàn)簡易訂餐系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡易訂餐系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C++實(shí)現(xiàn)迷宮算法實(shí)例解析

    C++實(shí)現(xiàn)迷宮算法實(shí)例解析

    這篇文章主要介紹了C++實(shí)現(xiàn)迷宮算法實(shí)例解析,是一個(gè)比較經(jīng)典的C++算法,有一定的學(xué)習(xí)與借鑒價(jià)值,需要的朋友可以參考下
    2014-07-07
  • C 語言常用方法技巧

    C 語言常用方法技巧

    本文主要介紹了C語言常用方法技巧。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-03-03
  • C語言實(shí)現(xiàn)頁面置換 先進(jìn)先出算法(FIFO)

    C語言實(shí)現(xiàn)頁面置換 先進(jìn)先出算法(FIFO)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)頁面置換,先進(jìn)先出算法(FIFO),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • C++ OpenCV實(shí)現(xiàn)銀行卡號(hào)識(shí)別功能

    C++ OpenCV實(shí)現(xiàn)銀行卡號(hào)識(shí)別功能

    這篇文章主要介紹了如何使用OpenCV C++實(shí)現(xiàn)銀行卡號(hào)識(shí)別功能,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)OpenCV有一定幫助,需要的可以參考一下
    2022-01-01
  • C語言 條件判斷詳細(xì)介紹

    C語言 條件判斷詳細(xì)介紹

    本文主要講解C語言 條件判斷,這里整理了相關(guān)資料,詳細(xì)說明了判斷語句知識(shí)要點(diǎn),希望能幫助學(xué)習(xí)C語言的同學(xué)
    2016-08-08
  • C語言實(shí)現(xiàn)簡單的掃雷小游戲

    C語言實(shí)現(xiàn)簡單的掃雷小游戲

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡單的掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • 數(shù)據(jù)結(jié)構(gòu)之伸展樹詳解

    數(shù)據(jù)結(jié)構(gòu)之伸展樹詳解

    這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)之伸展樹詳解,本文對伸展樹(Splay Tree)的單旋轉(zhuǎn)操作、一字型旋轉(zhuǎn)、之字形旋轉(zhuǎn)區(qū)間操作等理論知識(shí)做了講解,并給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2014-08-08
  • c++函數(shù)中的指針參數(shù)與地址參數(shù)區(qū)別介紹

    c++函數(shù)中的指針參數(shù)與地址參數(shù)區(qū)別介紹

    c++函數(shù)中的指針參數(shù)與地址參數(shù)區(qū)別介紹;可供參考
    2012-11-11

最新評(píng)論

永顺县| 信宜市| 屏边| 辽阳市| 内黄县| 尖扎县| 宁河县| 互助| 高淳县| 右玉县| 东乡县| 博白县| 宁陕县| 新安县| 大化| 石嘴山市| 甘泉县| 双峰县| 长岛县| 朝阳区| 邯郸市| 诏安县| 洛南县| 玛沁县| 康保县| 长岭县| 新余市| 九江市| 虎林市| 临朐县| 禄劝| 清水县| 东宁县| 晋城| 兰西县| 池州市| 土默特右旗| 华坪县| 南康市| 明星| 昆山市|