我想从一端到开头迭代一个unordered_set:
unordered_set<Expression*> BlocExpressions;
for(auto it=BlocExpressions.end(); it != BlocExpressions.begin(); it--){
//do some work
}
但是没有操作员 - 声明。
那么,我应该编写 - 运算符,还是有办法做到这一点?
答案 0 :(得分:4)
对于std::unordered_set
,迭代元素的顺序无关紧要。说,你可以想象订单是随机的。无论是进行前向迭代还是后向迭代,都不会得到特定的顺序。这就是为什么它不提供反向迭代器也不为正常迭代器提供--
运算符重载的原因。前向和后向迭代在这里具有相同的语义:以随机顺序迭代。
答案 1 :(得分:1)
我无法理解为什么你会使用单词&#34; end&#34;并且&#34;开始&#34;对于unordered_set。 unordered_set没有particular order。您可以使用迭代器对象迭代所有元素。 如果您需要订单中的订单,则应使用其他容器,例如std::set