我有一個枚舉,看起來像這樣:重載增量運算,循環和邊緣情況
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