例如應將下列類別分成兩部分:re C++範圍迭代器:只有一個類是不好的?
class Range {
public:
Range(int end);
Range begin();
Range end();
// Second class would contain these methods.
bool operator!=(const Range& range);
int operator*();
void operator++();
};
// Print 012
// Almost as pretty as Python :D
for (int i : Range(3)) {
std::cout << i;
}
?
PS:在標準庫中是否有這樣的類?
更新:
這裏的替代設計會是什麼樣子:
class Range;
class RangeIterator {
public:
bool operator!=(const RangeIterator& range_iterator);
int operator*();
void operator++();
private:
RangeIterator(const Range& range);
};
class Range {
public:
Range(int end);
RangeIterator begin();
RangeIterator end();
friend class RangeIterator;
};
不完全是,雖然有'std :: iota'。 – chris
'boost :: irange'。 – Pubby
我不知道有多少次我可以忘記存在。這非常有用。不久之後,至少範圍內正在向標準庫發展。 – chris