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

  • Avast

    Avast

    27 NİSAN 2006
  • Excel Video Tutorials

    Excel Video

    6 Aralık 2012
  • RayperEnglishKnight

    RayperEnglis

    24 Kasım 2008