本文介绍了如何从QList中删除元素,同时使用foreach迭代它?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 我是Qt的新手,试图学习习语。I'm new to Qt and trying to learn the idioms. foreach 文档说:但它不说如何在使用 foreach 进行迭代时删除元素。我最好的猜测是:But it doesn't say how to remove an element while iterating with foreach. My best guess is something like:int idx = 0;foreach (const Foo &foo, fooList) { if (bad(foo)) { fooList.removeAt(idx); } ++idx;}看起来很丑陋,必须有 idx 外部循环(并且必须保持一个单独的循环计数器)Seems ugly to have to scope idx outside the loop (and to have to maintain a separate loop counter at all). 是的,深度复制发生。 Yes, deep copy happens. 编辑:这似乎并不像惯用的Qt。EDIT : This doesn't seem like idiomatic Qt either.for (int idx = 0; idx < fooList.size(); ) { const Foo &foo = fooList[idx]; if (bad(foo)) { fooList.removeAt(idx); } else ++idx;}推荐答案你应该更好地使用迭代器:// Remove all odd numbers from a QList<int>QMutableListIterator<int> i(list);while (i.hasNext()) { if (i.next() % 2 != 0) i.remove();} 这篇关于如何从QList中删除元素,同时使用foreach迭代它?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
07-23 02:51
查看更多