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

  • Fraser Raft

    Fraser Raft

    9 Mart 2010
  • mahalodotcom

    mahalodotcom

    8 HAZİRAN 2007
  • Shaollin Animes

    Shaollin Ani

    19 HAZİRAN 2013