1. 程式人生 > 其它 >泛型演算法:處理容器元素並將結果存到另外容器的演算法transform()

泛型演算法:處理容器元素並將結果存到另外容器的演算法transform()

技術標籤: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分別對應兩個容器中的相應的值