亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++中std::for_each的使用

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

std::for_each的使用

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

1. 語(yǔ)法

#include <algorithm>

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

返回值:
返回 f,即傳入的函數(shù)對(duì)象(可用于累積狀態(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] 來(lái)累加元素值。

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)對(duì)比

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

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

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

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

可以使用自定義仿函數(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é)

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

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

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

相關(guān)文章

  • OpenSSL使用AES實(shí)現(xiàn)文件加解密功能

    OpenSSL使用AES實(shí)現(xiàn)文件加解密功能

    AES是一種對(duì)稱加密算法,它是目前廣泛使用的加密算法之一,意味著加密和解密使用相同的密鑰,這就要求密鑰的安全性非常重要,因?yàn)槿魏螕碛忻荑€的人都能進(jìn)行加密和解密操作,本文給大家介紹了OpenSSL如何使用AES實(shí)現(xiàn)文件加解密功能,需要的朋友可以參考下
    2023-11-11
  • C語(yǔ)言實(shí)現(xiàn)電子時(shí)鐘程序

    C語(yǔ)言實(shí)現(xiàn)電子時(shí)鐘程序

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)電子時(shí)鐘程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • C語(yǔ)言求質(zhì)數(shù)的幾種簡(jiǎn)單易懂方式

    C語(yǔ)言求質(zhì)數(shù)的幾種簡(jiǎn)單易懂方式

    這篇文章主要介紹了C語(yǔ)言求質(zhì)數(shù)的幾種簡(jiǎn)單易懂方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • C++ ostream用法案例詳解

    C++ ostream用法案例詳解

    這篇文章主要介紹了C++ ostream用法案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 關(guān)于《C和指針》的學(xué)習(xí)筆記

    關(guān)于《C和指針》的學(xué)習(xí)筆記

    本篇文章是對(duì)《C和指針》這本書的學(xué)習(xí)做了筆記介紹。需要的朋友參考下
    2013-05-05
  • C語(yǔ)言驅(qū)動(dòng)開發(fā)之內(nèi)核使用IO/DPC定時(shí)器詳解

    C語(yǔ)言驅(qū)動(dòng)開發(fā)之內(nèi)核使用IO/DPC定時(shí)器詳解

    本章將繼續(xù)探索驅(qū)動(dòng)開發(fā)中的基礎(chǔ)部分,定時(shí)器在內(nèi)核中同樣很常用,在內(nèi)核中定時(shí)器可以使用兩種,即IO定時(shí)器,以及DPC定時(shí)器,感興趣的可以了解一下
    2023-04-04
  • 詳解C/C++中的select、poll和epoll

    詳解C/C++中的select、poll和epoll

    本文通過(guò)示例介紹了C/C++中的select、poll和epoll知識(shí),結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2023-06-06
  • C/C++利用libxml2高效輸出XML大文件詳解

    C/C++利用libxml2高效輸出XML大文件詳解

    這篇文章主要給大家介紹了關(guān)于C/C++利用libxml2高效輸出XML大文件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • C語(yǔ)言如何實(shí)現(xiàn)一些算法或者函數(shù)你知道嗎

    C語(yǔ)言如何實(shí)現(xiàn)一些算法或者函數(shù)你知道嗎

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)一些算法或者函數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • C++ Boost log日志庫(kù)超詳細(xì)講解

    C++ Boost log日志庫(kù)超詳細(xì)講解

    Boost是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱。Boost庫(kù)是一個(gè)可移植、提供源代碼的C++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開發(fā)引擎之一,是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱
    2022-11-11

最新評(píng)論