qt 容器

本文详细介绍了C++容器中迭代器的使用方法,包括STL风格与Java风格的迭代器的区别,以及如何在循环遍历容器时进行元素删除的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 QList<QString> list;
 list << "A" << "B" << "C" << "D";

 QListIterator<QString> i(list);
 while (i.hasNext())
     qDebug() << i.next();

 

 

Unlike STL-style iterators (covered below), Java-style iterators point between items rather than directly at items

Then we call hasNext() to check whether there is an item after the iterator. If there is, we callnext() to jump over that item. The next() function returns the item that it jumps over。

 

java迭代器指向item中间位置,next跳过item,并返回跳过的item。

 

The remove() function removes the last item that we jumped over from the list. The call to remove() does not invalidate the iterator, so it is safe to continue using it.

remove移除跳过的元素。迭代器不会失效。

 

 

c++这边:

 

在循环遍历一个容器时,需要根据条件删除其中的某个元素,如何处理iterator?答案是:对于序列式容器标准写法是这样:
//vector<int> con;
for(vector<int>::iterator iter=con.begin();
  iter!=con.end();)
{
  if((*iter) == 99)
   iter=con.erase(iter);
  else
   ++iter;
}
对于关联容器是这样:
//map<int,int> con;
for(map<int,int>::iterator iter=con.begin();
  iter!=con.end();)
{
  if(iter->second == 99)
   con.erase(iter++);
  else
   ++iter;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值