我有一个枚举,看起来像这样:重载增量运算,循环和边缘情况
enum Suit {Clubs, Diamonds, Hearts, Spades};
我想重载递增运算符,这样我就可以很容易地遍历这四个帅哥。
当变数是Clubs,Diamonds或Hearts时没有问题。它的黑桃条件给我一点麻烦。
我的第一本能是定义它,以便当变量为黑桃时,增量将其设置为等于Clubs。问题是,这似乎无法循环枚举中的4个值。
如果我这样做
for(Suit i=Clubs;i<Spades;++i)
{cout<<i<<endl;}
然后我只输出去心。
,如果我做
for(suit i=Clubs;i<=Spades;++i)
{cout<<i<<endl;}
那么我的输出只是循环永远!
所以,我明显地想到了一些解决方法...我只是不确定惯用的C++的东西是做什么的。
我是否应该重新定义增量,以便尝试增加一个Spade导致一个Spade?或者可能引发异常?
重申:我完全可以想到一些解决此问题的方法。我只想让有经验的程序员指导他们,他们认为这是解决问题最“正常”的方式。
您刚刚发现,您自己需要[iterators](http://www.cplusplus.com/reference/std/iterator/),尤其是[end](http://www.cplusplus .com/reference/stl/vector/end /)部分。 – 2010-10-07 16:46:18