C++ STL transform 函數(shù)說明

說明

簡而言之堡掏,transform是用來做轉(zhuǎn)換的放棒。
轉(zhuǎn)換有兩種:一元轉(zhuǎn)換和二元轉(zhuǎn)換套利。

一元轉(zhuǎn)換是對容器給定范圍內(nèi)的每個元素做某種一元運算后放在另一個容器里。只涉及一個參與轉(zhuǎn)換運算的容器父晶。
有4個參數(shù),前2個指定要轉(zhuǎn)換的容器的起止范圍弄跌,第3個參數(shù)是結(jié)果存放容器的起始位置甲喝,第4個參數(shù)是一元運算。
函數(shù)簽名是:

template< class InputIt, class OutputIt, class UnaryOperation >
OutputIt transform( InputIt first1, InputIt last1, OutputIt d_first,
                    UnaryOperation unary_op );

二元轉(zhuǎn)換是對兩個容器給定范圍內(nèi)的每個元素做二元運算后放在另一個容器里铛只。涉及兩個參與轉(zhuǎn)換運算容器埠胖。
有5個參數(shù),前2個指定參與轉(zhuǎn)換的第1個容器的起止范圍淳玩,第3個參數(shù)是轉(zhuǎn)換的第2個容器的起始位置直撤,
第4個參數(shù)是結(jié)果存放容器的起始位置,第5個參數(shù)是二元運算蜕着。
函數(shù)簽名是:

template< class InputIt1, class InputIt2, class OutputIt, class BinaryOperation >
OutputIt transform( InputIt1 first1, InputIt1 last1, InputIt2 first2, 
                    OutputIt d_first, BinaryOperation binary_op );

頭文件

#include <algorithm>

例子:對字符串進行大小寫轉(zhuǎn)換

#include <iostream>
#include <cctype>
#include <string>
#include <algorithm>

using namespace std;

int main()
{
    std::string str = "Hello, World!";
    cout << str << endl;

    // toupper
    std::string strUpper(str.length(), ' ');
    std::transform(str.begin(), str.end(), strUpper.begin(), std::toupper);
    cout << strUpper << endl;

    // tolower
    std::transform(str.begin(), str.end(), str.begin(), std::tolower);
    cout << str << endl;

    system("pause");
    return 0;
}

結(jié)果:

Hello, World!
HELLO, WORLD!
hello, world!

這是一元轉(zhuǎn)換谋竖。

例子:兩個數(shù)組元素分別相加

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

int main()
{
    std::vector<int> v1 = {10, 20, 30, 40, 50};
    std::vector<int> v2 = { 1, 2, 3, 4, 5 };

    std::vector<int> result(5);
    std::transform(v1.begin(), v1.end(), v2.begin(), result.begin(), std::plus<int>());

    for (int i : result) {
        std::cout << i << "\t";
    }
    std::cout << std::endl;

    return 0;
}

結(jié)果:

11      22      33      44      55

這是二元轉(zhuǎn)換。

參考

http://www.cplusplus.com/reference/algorithm/transform/
https://zh.cppreference.com/w/cpp/algorithm/transform

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末承匣,一起剝皮案震驚了整個濱河市蓖乘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌悄雅,老刑警劉巖驱敲,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異宽闲,居然都是意外死亡众眨,警方通過查閱死者的電腦和手機握牧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來娩梨,“玉大人沿腰,你說我怎么就攤上這事”范ǎ” “怎么了颂龙?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長纽什。 經(jīng)常有香客問我措嵌,道長,這世上最難降的妖魔是什么芦缰? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任企巢,我火速辦了婚禮,結(jié)果婚禮上让蕾,老公的妹妹穿的比我還像新娘浪规。我一直安慰自己,他們只是感情好探孝,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布笋婿。 她就那樣靜靜地躺著,像睡著了一般顿颅。 火紅的嫁衣襯著肌膚如雪缸濒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天元镀,我揣著相機與錄音绍填,去河邊找鬼。 笑死栖疑,一個胖子當(dāng)著我的面吹牛讨永,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播遇革,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼卿闹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了萝快?” 一聲冷哼從身側(cè)響起锻霎,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎揪漩,沒想到半個月后旋恼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡奄容,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年冰更,在試婚紗的時候發(fā)現(xiàn)自己被綠了产徊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡蜀细,死狀恐怖舟铜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情奠衔,我是刑警寧澤谆刨,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站归斤,受9級特大地震影響痊夭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜脏里,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一生兆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧膝宁,春花似錦、人聲如沸根吁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽击敌。三九已至介返,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間沃斤,已是汗流浹背圣蝎。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留衡瓶,地道東北人徘公。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像哮针,于是被迫代替她去往敵國和親关面。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容