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

  • AyfionGaming

    AyfionGaming

    20 ŞUBAT 2013
  • Glyn Dewis

    Glyn Dewis

    25 AĞUSTOS 2007
  • picster

    picster

    20 NİSAN 2006