2016-03-04 46 views
2

我想從最終迭代的unordered_set的開始:如何從最終迭代的unordered_set到開始

unordered_set<Expression*> BlocExpressions; 

for(auto it=BlocExpressions.end(); it != BlocExpressions.begin(); it--){ 

       //do some work 

      } 

但沒有運營商 - 宣佈。

那麼,我應該編碼 - 運營商,還是有辦法做到這一點?

+4

由於unordered_set沒有鍵元素的順序,從頭到尾迭代的意義是什麼? –

+3

那裏的「無序」應該是一個提示。 ;-)(是的,我現在就爲自己而墮落了,在思考開始之前輸入'rbegin()')。 – DevSolar

回答

4

對於std::unordered_set,您遍歷元素的順序無關緊要。說這個,你可以想象這個訂單是隨機的。無論您進行正向迭代還是後向迭代,您都無法獲得特定順序。這就是爲什麼它不提供反向迭代器,也不提供正常迭代器的運算符重載。前向和後向迭代在這裏具有相同的語義:以隨機順序迭代。

+0

當然你有理由。 – Kamel

1

我不明白你爲什麼在unordered_set中使用單詞「end」和「begin」。 unordered_set沒有particular order。您可以使用迭代器對象來迭代所有元素。 如果你需要在集合中的訂單,你應該使用其他容器,例如std::set

相關問題