簡體   English   中英

C ++ 0x用基於范圍的for循環替換(int i ;;)范圍循環的方法

[英]C++0x way to replace for(int i;;) range loops with range-based for-loop

所以我一直在使用GCC 4.6進入新的C ++,它現在有基於范圍的for循環。 我發現這對迭代數組和向量非常好。

出於主要的美學原因,我想知道是否有辦法用它來取代標准

for(int i = min; i < max; i++) {}

喜歡的東西

for(int& i : std::range(min, max)) {}

新的C ++標准中是否有內置的東西允許我這樣做? 或者我必須編寫自己的范圍/迭代器類?

我什么都看不到。 但這將是相當微不足道的:

class range_iterator : public std::input_iterator<int, int> {
    int x;
public:
    range_iterator() {}
    range_iterator(int x) : x(x) {}
    range_iterator &operator++() { ++x; return *this; }
    bool operator==(const range_iterator &r) const { return x == r.x; }
    int operator*() const { return x; }
};
std::pair<range_iterator, range_iterator> range(int a, int b) {
    return std::make_pair(range_iterator(a), range_iterator(b));
}

應該做的伎倆(在我的頭頂;可能需要一點調整)。 一對迭代器應該已經是范圍,所以我相信你不應該自己定義開始和結束。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM