25 AÄžUSTOS 2011, PERÅžEMBE
Döngüler için temel bir dizi ile kullanmak için C 11 Aralık bir sınıf var mı?
Kendimi biraz önce bu yazı bulundu:
template <long int T_begin, long int T_end>
class range_class {
public:
class iterator {
friend class range_class;
public:
long int operator *() const { return i_; }
const iterator &operator () { i_; return *this; }
iterator operator (int) { iterator copy(*this); i_; return copy; }
bool operator ==(const iterator &other) const { return i_ == other.i_; }
bool operator !=(const iterator &other) const { return i_ != other.i_; }
protected:
iterator(long int start) : i_ (start) { }
private:
unsigned long i_;
};
iterator begin() const { return iterator(T_begin); }
iterator end() const { return iterator(T_end); }
};
template <long int T_begin, long int T_end>
const range_class<T_begin, T_end>
range()
{
return range_class<T_begin, T_end>();
}
Ve bu bana, bu gibi ÅŸeyler yazabilirsiniz:
for (auto i: range<0, 10>()) {
// stuff with i
}
Şimdi, yazdığım belki de en iyi kod olmadığını biliyorum. Ve belki de daha esnek ve kullanışlı hale getirmek için bir yol var. Ama bu standart bir parçası yapılmalı gibi bir şey gibi geliyor bana.
Öyle değil mi? Yeni kütüphane çeşit tamsayı veya hesaplanan skaler değerler genel bir dizi belki aralığında kullanımına eklendi?
CEVAP
25 AÄžUSTOS 2011, PERÅžEMBE
C standart Kütüphanesi, ama kesinlikle nitelendirir Boost.Range has boost::counting_range, yok. Ayrıca biraz kapsamında daha odaklı olan boost::irange kullanabilirsiniz.
Bunu PaylaÅŸ:

Bir yöntem gibi " var mı JavaScrip...
bir öğe veri-öznitelik değeri için bir...
aynı sınıf ile öğeleri döngü için bir ...
Soyut bir sınıf yerine bir arabirimi k...
Nasıl Jackson nesneleri bir dizi deser...