Qt QList<;int>;替换值
我有一个int的QListQt QList<;int>;替换值,qt,qlist,Qt,Qlist,我有一个int的QList eg: [10,10]; 然后我想把这个值减少1 我试过: foreach (int val, valList) { val-= 1; } 但valList的qDebug显示它们的值仍然为10。我做错了什么?您不能使用foreach来更改您正在迭代的容器中的值,如下所示: 当容器进入一个容器时,Qt自动获取该容器的副本 foreach循环。如果在迭代时修改容器,则 不会影响循环。(如果不修改容器,则复制 仍然会发生,但由于隐式共享复制容器 速度非常快。)
eg: [10,10];
然后我想把这个值减少1
我试过:
foreach (int val, valList) {
val-= 1;
}
但valList的qDebug显示它们的值仍然为10。我做错了什么?您不能使用
foreach
来更改您正在迭代的容器中的值,如下所示:
当容器进入一个容器时,Qt自动获取该容器的副本
foreach循环。如果在迭代时修改容器,则
不会影响循环。(如果不修改容器,则复制
仍然会发生,但由于隐式共享复制容器
速度非常快。)
因为foreach使用非常量创建容器的副本
变量的引用不允许修改原始变量
容器。它只影响副本,而副本可能不是您想要的
需要
Qt的foreach循环的另一种选择是基于范围的
C++ 11的一部分,更新。但是,请记住,范围是基于
for可能会强制Qt容器分离,而foreach则不会。
但是使用foreach总是复制容器,这通常是不正确的
便宜的STL集装箱。如果有疑问,请选择foreach for Qt
容器,以及基于范围的STL容器
您不能使用
foreach
来更改正在迭代的容器中的值,如下所示:
当容器进入一个容器时,Qt自动获取该容器的副本
foreach循环。如果在迭代时修改容器,则
不会影响循环。(如果不修改容器,则复制
仍然会发生,但由于隐式共享复制容器
速度非常快。)
因为foreach使用非常量创建容器的副本
变量的引用不允许修改原始变量
容器。它只影响副本,而副本可能不是您想要的
需要
Qt的foreach循环的另一种选择是基于范围的
C++ 11的一部分,更新。但是,请记住,范围是基于
for可能会强制Qt容器分离,而foreach则不会。
但是使用foreach总是复制容器,这通常是不正确的
便宜的STL集装箱。如果有疑问,请选择foreach for Qt
容器,以及基于范围的STL容器
我会用C++ 11和以后的:
void changeIntVals(QList<int>& valList)
{
for(auto& val: valList)
{
val -= 1;
}
}
void changeIntVals(QList和valList)
{
用于(自动和val:valList)
{
val-=1;
}
}
S.没有尝试编译。
< P>我将用C++ 11和以后:尝试这个。void changeIntVals(QList<int>& valList)
{
for(auto& val: valList)
{
val -= 1;
}
}
void changeIntVals(QList和valList)
{
用于(自动和val:valList)
{
val-=1;
}
}
p.S.没有尝试编译。是的,这是一条路。是的,这是一条路。