SORU
9 Aralık 2011, Cuma


Std::begin ve std::konteyner yerine belirli sürümlerine

Herhangi bir genel tercihler ya da kurallar başlangıç ve bitiş ücretsiz işlevleri yerine kullanılmalıdır std::begin std::end özel sürümleri konteyner açıklar var mı?

Tür parametresi std::begin std::end kullanılmalıdır, örn: şablon bir sayede eğer işlev bir şablonu ise anladığım kadarıyla

template<class T> void do_stuff( const T& t )
{
    std::for_each( std::begin(t), std::end(t), /* some stuff */ );
}

Konteyner türü olduğu hakkında standart bir üye gibi diğer senaryolarda işlevi ne? std::begin(cont) std::end(cont) kullanmak için hala iyi bir egzersizdir veya konteynerin üye fonksiyonlar cont.begin() cont.end() tercih edilmeli?

std::end(cont) cont.end() çağırarak performans yararı yoktur düşünmekte haklı mıyım?

CEVAP
9 Aralık 2011, Cuma


Ücretsiz işlev sürümü kabın üye işlevi daha geneldir. Kabın tipi el önce (ve bir dizi olabilir) bilinen değil, muhtemelen genel bir kod kullanmak istiyorum. Kod (kap sabit ve bilinen yani) geri kalanı muhtemelen c.begin() atalet nedeniyle kullanırdım. C yeni ders kitapları ücretsiz işlev sürümü tavsiye beklerdim hiç bu kadar kötü ve bazen daha iyi olduğu gibi), ama bu ortak kullanım yetişmek için vardır.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • habpsu

    habpsu

    25 Temmuz 2007
  • knopik96

    knopik96

    7 Mayıs 2011
  • L- Crysis

    L- Crysis

    30 Aralık 2011