SORU
14 AĞUSTOS 2008, PERŞEMBE


Nasıl aşırı std::swap()

std::swap() birçok std kaplar tarafından kullanılan (std::list std::vector gibi) sıralama bile atama sırasında.

Ama swap() std uygulaması çok yaygın ve özel türler için oldukça verimsiz.

Böylece verimlilik özel tür özel bir uygulama ile std::swap() aşırı yükleyerek elde edilebilir. Ama nasıl std konteyner tarafından kullanılacak yani uygulayabilirsin?

CEVAP
21 NİSAN 2010, ÇARŞAMBA


Aşırı takas için doğru şekilde bağımlı değişken arama (ADL) bulunabilir ki takas, aynı ad yazmak için. Özellikle yapmak kolay bir şey vardır

class X
{
    // ...
    friend void swap(X& a, X& b)
    {
        using std::swap; // bring in swap for built-in types

        swap(a.base1, b.base1);
        swap(a.base2, b.base2);
        // ...
        swap(a.member1, b.member1);
        swap(a.member2, b.member2);
        // ...
    }
};

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Caramella Girls

    Caramella Gi

    19 Mayıs 2008
  • JamesAtiPhone

    JamesAtiPhon

    16 EYLÜL 2010
  • Santozz Yazz

    Santozz Yazz

    23 Mart 2014