亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在遍歷中使用 iterator/reverse

如何在遍歷中使用 iterator/reverse

紅顏莎娜 2019-03-02 03:03:35
如何在遍歷中使用 iterator/reverse
查看完整描述

2 回答

?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

對 list 和 vector 來說,它們的 erase 函數會返回下一個迭代器,因此在遍歷時,只需要 it = c.erase(it); 即可。

對 map 和 set 來說,它們的 erase 函數返回的 void,而在進行 erase 之后,當前迭代器會失效,無法再用于獲取下一個迭代器。因此需要 erase 之前就獲取指向下一個元素的迭代器。如:

tmpIt = it; ++it; c.erase(tmpIt);

利用后綴++操作符的特性(先創建副本,然后再遞增迭代器,然后返回副本)上面的三行代碼可以簡化為一行:

c.erase(it++);

list 正向遍歷刪除元素示例(vector 用法相同):

// erase with iterator
list<int>::iterator it;
for (it = l.begin(); it != l.end();)
{
if (0 == (*it) % 2) {
it = l.erase(it);
}
else {
++it;
}
}

map 正向遍歷刪除元素示例(set 用法相同):

// erase with iterator
map<int, int>::iterator mit;
for (mit = m.begin(); mit != m.end();)
{
if (0 == mit->first % 2) {
m.erase(mit++);
}
else {
++mit;
}
}



查看完整回答
反對 回復 2019-03-09
?
飲歌長嘯

TA貢獻1951條經驗 獲得超3個贊

你這里的d.next()得到的是object類型,而100是int類型,這里會出現異常。你可以把iterator加上泛型iterator試試看

查看完整回答
反對 回復 2019-03-09
  • 2 回答
  • 0 關注
  • 792 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號