如何从一端到开头迭代一个unordered_set

时间:2016-03-04 07:34:41

标签: c++11

我想从一端到开头迭代一个unordered_set:

unordered_set<Expression*> BlocExpressions;

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

                //do some work

            }

但是没有操作员 - 声明。

那么,我应该编写 - 运算符,还是有办法做到这一点?

2 个答案:

答案 0 :(得分:4)

对于std::unordered_set,迭代元素的顺序无关紧要。说,你可以想象订单是随机的。无论是进行前向迭代还是后向迭代,都不会得到特定的顺序。这就是为什么它不提供反向迭代器也不为正常迭代器提供--运算符重载的原因。前向和后向迭代在这里具有相同的语义:以随机顺序迭代。

答案 1 :(得分:1)

我无法理解为什么你会使用单词&#34; end&#34;并且&#34;开始&#34;对于unordered_set。 unordered_set没有particular order。您可以使用迭代器对象迭代所有元素。 如果您需要订单中的订单,则应使用其他容器,例如std::set