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

  • andony5589

    andony5589

    7 Aralık 2011
  • metagamers

    metagamers

    13 Mayıs 2006
  • SlimaksClass

    SlimaksClass

    15 Kasım 2010