当前位置: 代码迷 >> QT开发 >> 发现qt大bug,该如何解决
  详细解决方案

发现qt大bug,该如何解决

热度:285   发布时间:2016-04-25 02:54:48.0
发现qt大bug
QList<int> ss;
for (int i=0; i<5; i++)
{
ss.append(i);
}


for (auto it=ss.begin(); it!=ss.end(); it++)
{
int i = -1;
if (*it == 1||*it==2)
{
i = it - ss.begin();
WRITE_FMT_LOG("%d\n", i);
ss.removeAt(i);
i = it - ss.begin();
WRITE_FMT_LOG("%d\n", i);
//it--;
}
}

我们都知道,使用迭代器remove元素,要把remove返回的迭代器传给当前迭代器,std map什么的都是这样的.
但qt的QList只有一个removeat,还没返回值,只能手动通过 迭代器减减 来做.

减减就减减吧,关键是,removeAt之后 的行为不一致.

就上面那个例子,如果比较的是1、2两个数字 (if (*it == 1||*it==2)) 不需要减减,自动remove往前减一个,
而如果是3、4,则不自动减.产生歧义.
------解决思路----------------------
没看明白什么意思。
QList依然可以用类似STL的erase(),为什么非要用removeAt()?
  相关解决方案