我想從最終迭代的unordered_set的開始:如何從最終迭代的unordered_set到開始
unordered_set<Expression*> BlocExpressions;
for(auto it=BlocExpressions.end(); it != BlocExpressions.begin(); it--){
//do some work
}
但沒有運營商 - 宣佈。
那麼,我應該編碼 - 運營商,還是有辦法做到這一點?
我想從最終迭代的unordered_set的開始:如何從最終迭代的unordered_set到開始
unordered_set<Expression*> BlocExpressions;
for(auto it=BlocExpressions.end(); it != BlocExpressions.begin(); it--){
//do some work
}
但沒有運營商 - 宣佈。
那麼,我應該編碼 - 運營商,還是有辦法做到這一點?
對於std::unordered_set
,您遍歷元素的順序無關緊要。說這個,你可以想象這個訂單是隨機的。無論您進行正向迭代還是後向迭代,您都無法獲得特定順序。這就是爲什麼它不提供反向迭代器,也不提供正常迭代器的運算符重載。前向和後向迭代在這裏具有相同的語義:以隨機順序迭代。
當然你有理由。 – Kamel
我不明白你爲什麼在unordered_set中使用單詞「end」和「begin」。 unordered_set沒有particular order。您可以使用迭代器對象來迭代所有元素。 如果你需要在集合中的訂單,你應該使用其他容器,例如std::set
由於unordered_set沒有鍵元素的順序,從頭到尾迭代的意義是什麼? –
那裏的「無序」應該是一個提示。 ;-)(是的,我現在就爲自己而墮落了,在思考開始之前輸入'rbegin()')。 – DevSolar