Döngüler için temel bir dizi ile kullanmak için C 11 Aralık bir sınıf var mı? | Netgez.com
SORU
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ÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 24 Канал

    24 КанаÐ

    5 ÅžUBAT 2006
  • Diogo Oliveira

    Diogo Olivei

    4 HAZİRAN 2006
  • MusicDeluxeTV

    MusicDeluxeT

    14 Mayıs 2010