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

  • EmbarkToHeaven

    EmbarkToHeav

    3 EYLÜL 2007
  • Felice Musique

    Felice Musiq

    22 NİSAN 2014
  • fireflame65

    fireflame65

    27 Mart 2007