1、generate()
generate()能够将容器中一定范围的值替换成指定的值。对空容器不起作用。
QStringList list;
auto it = std::inserter(list,list.begin());//每次插入将在begin()处插入
for(int i = 0;i < 5;++i)
{
*it = QString("xx");
++it;
}
qDebug()<<list;
std::generate(list.begin(),list.end(),[]
{
return QString("kk");
});
qDebug()<<list;
这里先用插入迭代器向容器内存放了5个字符串,然后将这5个字符串替换成指定的字符串。
2、generate_n()
generate_n()类似,参数2是数值,指定要替换的个数。
QStringList list;
auto it = std::inserter(list,list.begin());//每次插入将在begin()处插入
for(int i = 0;i < 5;++i)
{
*it = QString("xx");
++it;
}
qDebug()<<list;
std::generate_n(list.begin(),3,[]
{
return QString("kk");
});
qDebug()<<list;
从首迭代器开始,替换3个元素。
generate()和replace()对比都是替换的算法,一个是替换容器中一定范围的,一个是替换和指定元素相等的值的。泛型算法:替换算法replace()