SORU
17 AĞUSTOS 2012, Cuma


Neden arkasında/cend cbegin nedir?

cbegin cend C 11 tanıtıldı neden acaba?

Bu yöntemler arama begin end sabit aşırı bir fark yaratıyor durumlar nelerdir?

CEVAP
17 AĞUSTOS 2012, Cuma


Çok basit. Diyelim ki bir vektör var:

std::vector<int> vec;

Ben bazı veriler ile doldurun. O zaman bazı yineleyicisi almak istiyorum. Belki etrafında onları geçmek. Belki 9* *için:

std::for_each(vec.begin(), vec.end(), SomeFunctor());

C 03, SomeFunctor edebilmek için ücretsizdeğiştirinaldığı parametre. , SomeFunctor const& tarafından değer veya parametre alabilir ama yol yokolunEvet, öyle gözüküyor. Böyle aptalca bir şey yapmadan olmaz:

const std::vector<int> &vec_ref = vec;
std::for_each(vec_ref.begin(), vec_ref.end(), SomeFunctor());

Şimdi, biz cbegin/cend takdim:

std::for_each(vec.cbegin(), vec.cend(), SomeFunctor());

Şimdi, SomeFunctor olamaz vektör (inş-alçı, tabii ki bir olmadan) elemanları değiştirmek dair güvence cümle var. Biz açıkça const_iterators olsun, ve bu nedenle SomeFunctor::operator () const int & ile verilir. Eğer alırsa int & C derleyici bir hata verecektir parametre olarak.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Canal de arkyoru

    Canal de ark

    18 Ocak 2007
  • GWTLecturer

    GWTLecturer

    18 EKİM 2012
  • michal lelkowski

    michal lelko

    9 Temmuz 2006