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

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

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

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

一元操作

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

以下是一個(gè)簡單的示例,演示了如何使用 std::transform 對一個(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());

    // 對 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 對 input 中的每個(gè)元素進(jìn)行平方操作,并將結(jié)果存儲(chǔ)在 output 中。通過提供一個(gè) lambda 函數(shù) [](int x) { return x * x; } 作為轉(zhuǎn)換操作,我們將每個(gè)元素平方后存儲(chǔ)在 output 中。

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

二元操作

std::transform 函數(shù)還可以支持二元操作符,用于對兩個(gè)輸入序列中對應(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è)輸入序列對應(yīng)位置元素進(jìn)行操作后的結(jié)果。
  • binary_op: 一個(gè)二元函數(shù)對象(BinaryOperation),用于對兩個(gè)輸入序列中對應(yīng)位置的元素進(jìn)行操作。

以下是一個(gè)示例,演示了如何使用二元操作符的 std::transform 對兩個(gè)向量中對應(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());

    // 對 vec1 和 vec2 中對應(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 對 vec1 和 vec2 中對應(yīng)位置的元素進(jìn)行相加操作,并將結(jié)果存儲(chǔ)在 result 中。通過提供一個(gè) lambda 函數(shù) [](int x, int y) { return x + y; } 作為二元操作符,我們將兩個(gè)向量中對應(yīng)位置的元素相加后存儲(chǔ)在 result 中。

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

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

相關(guān)文章

  • 帶你了解C++的IO流

    帶你了解C++的IO流

    這篇文章主要介紹了C++ IO流的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下,希望能夠給你帶來幫助
    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)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(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à)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C語言實(shí)現(xiàn)K-Means算法

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

    這篇文章主要為大家詳細(xì)介紹了C語言實(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)大的特性之一,它對模板參數(shù)進(jìn)行了高度泛化,能表示0到任意個(gè)數(shù)、任意類型的參數(shù),這篇文章主要介紹了C++可變參數(shù)模板的展開方式,需要的朋友可以參考下
    2022-08-08
  • C++ 函數(shù)重載詳情介紹

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

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

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

    幾乎所有的編程語言都支持正則表達(dá)式。 C++從C++11開始直接支持正則表達(dá)式。除了編程語言之外,大多數(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ù)組中搜索),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • VSCode插件開發(fā)全攻略之跳轉(zhuǎn)到定義、自動(dòng)補(bǔ)全、懸停提示功能

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

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

最新評論

安西县| 交口县| 庆阳市| 凉城县| 肥西县| 武城县| 乐平市| 娱乐| 汉源县| 肇庆市| 行唐县| 民县| 盐池县| 霍山县| 鲜城| 陕西省| 禹城市| 靖州| 胶南市| 凤城市| 乌审旗| 临泽县| 苍梧县| 商城县| 湖口县| 外汇| 黑河市| 宣城市| 潼关县| 广南县| 随州市| 丘北县| 新河县| 彩票| 华容县| 梨树县| 塘沽区| 垫江县| 田东县| 金门县| 荆州市|