SORU
2 Mart 2013, CUMARTESİ


C 11 Aralık tabanlı döngü: bir değer veya başvuru madde sabit olsun

Aralığı tabanlı bazı örnekler okuma iki ana yolu önerdikleri döngüler**, , *, *192*18 16*

std::vector<MyClass> vec;

for (auto &x : vec)
{
  // x is a reference to an item of vec
  // We can change vec's items by changing x 
}

ya

for (auto x : vec)
{
  // Value of x is copied from an item of vec
  // We can not change vec's items by changing x
}

İyi.

vec öğeleri değiştirme ihtiyacımız yok, IMO, Örnek İkinci Sürüm (değer) kullanmanızı öneririz. Neden 7* *başvurular (En azından doğrudan bir öneri bulamadım) bir şey önermek yok:

for (auto const &x : vec) // <-- see const keyword
{
  // x is a reference to an const item of vec
  // We can not change vec's items by changing x 
}

Bu daha iyi değil mi? const bir iken, her tekrarında yedek bir kopyasını önlemek değil mi?

CEVAP
2 Mart 2013, CUMARTESİ


Öğeleri değiştirmek istiyor gibi olmak istemiyorsanönlemekkopyalarını yapmak, auto const & doğru tercih

for (auto const &x : vec)

Sana auto & kullanmayı öneriyor kim yanlış. Onları görmezden.

Burada özetleyelim:

  • Kopya ile çalışmak istiyorsanız auto x seçin.
  • Orijinal öğeleri ile çalışmak istediğiniz zaman auto &x seçin ve onları değiştirebilir.
  • Orijinal öğeleri ile çalışmak istiyorsanız auto const &x seçin ve onları değiştirmez.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CommonArtisan

    CommonArtisa

    7 Temmuz 2012
  • Dirty Loops

    Dirty Loops

    21 Mayıs 2007
  • infiniTuts

    infiniTuts

    18 Ocak 2012