泛型演算法:處理容器元素並將結果存到另外容器的演算法transform()
阿新 • • 發佈:2021-02-07
技術標籤:c++標準庫中的演算法
transform()有兩個版本
- 一元謂詞版
QStringList list; auto it = std::inserter(list,list.begin());//每次插入將在begin()處插入 for(int i = 0;i < 5;++i) { *it = QString("xx%1").arg(i); ++it; } QStringList list2; std::transform(list.begin(),list.end(),std::back_inserter(list2),[](QString value) { value.append("_666"); return value; }); qDebug()<<list; qDebug()<<list2;
將每個字串後面加上“_666”再存到新的容器中。
- 二元謂詞版
QStringList list4; it = std::inserter(list4,list4.begin());//每次插入將在begin()處插入 for(int i = 0;i < 5;++i) { *it = QString("yy%1").arg(i); ++it; } QStringList list5; std::transform(list.begin(),list.end(),list4.begin(),std::back_inserter(list5),[](const QString & s1,const QString & s2) { return s1 + "_" + s2; }); qDebug()<<list4; qDebug()<<list5;
引數3是容器2的迭代器,容器2要求容器裡面的元素個數不小於容器1的,引數是4是儲存結果的迭代器,引數5是二元謂詞函式,這裡自定義了處理規則。其中s1和s2分別對應兩個容器中的相應的值