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分别对应两个容器中的相应的值