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

C++中std::transform的使用小結(jié)

 更新時(shí)間:2024年05月20日 08:28:28   作者:CoderIsArt  
std::transform?是 C++ 標(biāo)準(zhǔn)庫(kù)中的一個(gè)算法,本文主要介紹了C++中std::transform的使用,具有一定的參考價(jià)值,感興趣的可以了解一下

使用std::transform函數(shù)需要包含<algorithm>頭文件

一元操作

std::transform 是 C++ 標(biāo)準(zhǔn)庫(kù)中的一個(gè)算法,用于將一個(gè)序列中的每個(gè)元素進(jìn)行轉(zhuǎn)換,并將結(jié)果存儲(chǔ)在另一個(gè)序列中。該算法可以接受兩個(gè)輸入序列,對(duì)應(yīng)位置的元素進(jìn)行操作,然后將結(jié)果存儲(chǔ)在輸出序列中,也可以接受一個(gè)輸入序列,對(duì)其進(jìn)行轉(zhuǎn)換后直接覆蓋原序列。

以下是 std::transform 函數(shù)的通用簽名

template <class InputIterator, class OutputIterator, class UnaryOperation>
OutputIterator transform(InputIterator first1, InputIterator last1,
                          OutputIterator result, UnaryOperation op);

std::transform 接受四個(gè)參數(shù):

  • first1last1: 表示輸入序列的起始和結(jié)束迭代器,包括起始位置但不包括結(jié)束位置。
  • result: 表示輸出序列的起始迭代器,用于存儲(chǔ)轉(zhuǎn)換后的結(jié)果。
  • op: 一個(gè)一元函數(shù)對(duì)象(UnaryOperation),用于對(duì)輸入序列中的每個(gè)元素進(jìn)行轉(zhuǎn)換操作。

以下是一個(gè)簡(jiǎn)單的示例,演示了如何使用 std::transform 對(duì)一個(gè)向量中的每個(gè)元素進(jìn)行平方操作,并將結(jié)果存儲(chǔ)在另一個(gè)向量中:

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

int main() {
    std::vector<int> input = {1, 2, 3, 4, 5};
    std::vector<int> output(input.size());

    // 對(duì) input 中的每個(gè)元素進(jìn)行平方操作,結(jié)果存儲(chǔ)在 output 中
    std::transform(input.begin(), input.end(), output.begin(),
                   [](int x) { return x * x; });

    // 輸出轉(zhuǎn)換后的結(jié)果
    for (int num : output) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

在上面的示例中,我們使用 std::transform 對(duì) input 中的每個(gè)元素進(jìn)行平方操作,并將結(jié)果存儲(chǔ)在 output 中。通過(guò)提供一個(gè) lambda 函數(shù) [](int x) { return x * x; } 作為轉(zhuǎn)換操作,我們將每個(gè)元素平方后存儲(chǔ)在 output 中。

總之,std::transform 是一個(gè)非常有用的算法,用于對(duì)序列中的元素進(jìn)行轉(zhuǎn)換操作,并將結(jié)果存儲(chǔ)在另一個(gè)序列中。

二元操作

std::transform 函數(shù)還可以支持二元操作符,用于對(duì)兩個(gè)輸入序列中對(duì)應(yīng)位置的元素進(jìn)行操作,并將結(jié)果存儲(chǔ)在輸出序列中。以下是 std::transform 函數(shù)的另一個(gè)通用簽名,用于支持二元操作符:

template <class InputIterator1, class InputIterator2, class OutputIterator, class BinaryOperation>
OutputIterator transform(InputIterator1 first1, InputIterator1 last1,
                         InputIterator2 first2, OutputIterator result, BinaryOperation binary_op);

std::transform 函數(shù)接受五個(gè)參數(shù):

  • first1last1: 表示第一個(gè)輸入序列的起始和結(jié)束迭代器,包括起始位置但不包括結(jié)束位置。
  • first2: 表示第二個(gè)輸入序列的起始迭代器。
  • result: 表示輸出序列的起始迭代器,用于存儲(chǔ)兩個(gè)輸入序列對(duì)應(yīng)位置元素進(jìn)行操作后的結(jié)果。
  • binary_op: 一個(gè)二元函數(shù)對(duì)象(BinaryOperation),用于對(duì)兩個(gè)輸入序列中對(duì)應(yīng)位置的元素進(jìn)行操作。

以下是一個(gè)示例,演示了如何使用二元操作符的 std::transform 對(duì)兩個(gè)向量中對(duì)應(yīng)位置的元素進(jìn)行相加操作,并將結(jié)果存儲(chǔ)在另一個(gè)向量中:

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

int main() {
    std::vector<int> vec1 = {1, 2, 3, 4, 5};
    std::vector<int> vec2 = {10, 20, 30, 40, 50};
    std::vector<int> result(vec1.size());

    // 對(duì) vec1 和 vec2 中對(duì)應(yīng)位置的元素進(jìn)行相加操作,結(jié)果存儲(chǔ)在 result 中
    std::transform(vec1.begin(), vec1.end(), vec2.begin(), result.begin(),
                   [](int x, int y) { return x + y; });

    // 輸出相加后的結(jié)果
    for (int num : result) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

在這個(gè)示例中,我們使用二元操作符的 std::transform 對(duì) vec1 和 vec2 中對(duì)應(yīng)位置的元素進(jìn)行相加操作,并將結(jié)果存儲(chǔ)在 result 中。通過(guò)提供一個(gè) lambda 函數(shù) [](int x, int y) { return x + y; } 作為二元操作符,我們將兩個(gè)向量中對(duì)應(yīng)位置的元素相加后存儲(chǔ)在 result 中。

總之,std::transform 函數(shù)不僅支持一元操作符,還支持二元操作符,可以非常方便地對(duì)兩個(gè)序列中對(duì)應(yīng)位置的元素進(jìn)行操作,并將結(jié)果存儲(chǔ)在輸出序列中。

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

相關(guān)文章

  • 帶你了解C++的IO流

    帶你了解C++的IO流

    這篇文章主要介紹了C++ IO流的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下,希望能夠給你帶來(lái)幫助
    2021-09-09
  • Qt把文件夾從A移動(dòng)到B的實(shí)現(xiàn)示例

    Qt把文件夾從A移動(dòng)到B的實(shí)現(xiàn)示例

    本文主要介紹了Qt把文件夾從A移動(dòng)到B的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • C++ 格式化日志輸出實(shí)現(xiàn)代碼

    C++ 格式化日志輸出實(shí)現(xiàn)代碼

    這篇文章主要介紹了C++ 格式化日志輸出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2019-04-04
  • C/C++的文件IO函數(shù)你知道嗎

    C/C++的文件IO函數(shù)你知道嗎

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

    C語(yǔ)言實(shí)現(xiàn)K-Means算法

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)K-Means算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 淺析C++模板類型中的原樣轉(zhuǎn)發(fā)和可變參數(shù)的實(shí)現(xiàn)

    淺析C++模板類型中的原樣轉(zhuǎn)發(fā)和可變參數(shù)的實(shí)現(xiàn)

    可變參數(shù)模板(variadic templates)是C++11新增的強(qiáng)大的特性之一,它對(duì)模板參數(shù)進(jìn)行了高度泛化,能表示0到任意個(gè)數(shù)、任意類型的參數(shù),這篇文章主要介紹了C++可變參數(shù)模板的展開(kāi)方式,需要的朋友可以參考下
    2022-08-08
  • C++ 函數(shù)重載詳情介紹

    C++ 函數(shù)重載詳情介紹

    這篇文章主要介紹了C++ 函數(shù)重載詳情,函數(shù)重載還有一個(gè)別名叫函數(shù)多態(tài),函數(shù)多態(tài)是C++在C語(yǔ)言基礎(chǔ)上的新特性,它可以讓我們使用多個(gè)同名函數(shù),下面來(lái)看看文章具體內(nèi)容的介紹
    2021-11-11
  • C++中正則表達(dá)式的使用方法詳解

    C++中正則表達(dá)式的使用方法詳解

    幾乎所有的編程語(yǔ)言都支持正則表達(dá)式。 C++從C++11開(kāi)始直接支持正則表達(dá)式。除了編程語(yǔ)言之外,大多數(shù)文本處理程序都使用正則表達(dá)式。本文將探討正則表達(dá)式的一般細(xì)節(jié)以及C++編程方面的細(xì)節(jié),感興趣的可以學(xué)習(xí)一下
    2022-05-05
  • C++實(shí)現(xiàn)LeetCode(33.在旋轉(zhuǎn)有序數(shù)組中搜索)

    C++實(shí)現(xiàn)LeetCode(33.在旋轉(zhuǎn)有序數(shù)組中搜索)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(33.在旋轉(zhuǎn)有序數(shù)組中搜索),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • VSCode插件開(kāi)發(fā)全攻略之跳轉(zhuǎn)到定義、自動(dòng)補(bǔ)全、懸停提示功能

    VSCode插件開(kāi)發(fā)全攻略之跳轉(zhuǎn)到定義、自動(dòng)補(bǔ)全、懸停提示功能

    這篇文章主要介紹了VSCode插件開(kāi)發(fā)全攻略之跳轉(zhuǎn)到定義、自動(dòng)補(bǔ)全、懸停提示,需要的朋友可以參考下
    2020-05-05

最新評(píng)論

达拉特旗| 康定县| 凤城市| 芷江| 即墨市| 扎兰屯市| 清流县| 仁寿县| 高唐县| 乐都县| 淮阳县| 临桂县| 香格里拉县| 惠安县| 桐庐县| 平罗县| 城固县| 兴隆县| 洪洞县| 玉林市| 永新县| 楚雄市| 宜春市| 普格县| 上高县| 增城市| 渭南市| 平顶山市| 繁峙县| 安泽县| 屯留县| 沁水县| 闽清县| 郓城县| 叙永县| 新余市| 怀来县| 昂仁县| 兴和县| 云和县| 蓬溪县|