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

  • Facebook Developers

    Facebook Dev

    24 ŞUBAT 2009
  • steven johns

    steven johns

    11 Mart 2011
  • Troy Hunt

    Troy Hunt

    29 EYLÜL 2011