我尝试做如下操作:
QList<QString> a;
foreach(QString& s, a)
{
s += "s";
}
这似乎是合法的代码,但我最终遇到一个错误,指出它无法将 'const QString' 转换为 'QString &'。
为什么Qt中的foreach循环使用const引用进行迭代?
for (QList<QString>::iterator i = a.begin(); i != a.end(); ++i) {
(*i) += "s";
}
需要多打一点字,但不需要太多。
QList<QString> a;
BOOST_FOREACH(QString& s, a)
{
s += "s";
}
在C++11中,Qt现在鼓励使用标准的for
语法,而不是Qt foreach:
QList<QString> a;
for(auto& s : a)
{
s += "s";
}
namespace bl = boost::lambda;
std::for_each(a.begin(),a.end(),bl::_1 += "s");