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

  • B4ROK

    B4ROK

    1 EKİM 2008
  • Alexey - servant of Christ

    Alexey - ser

    15 EYLÜL 2007
  • PaulGBelliveau

    PaulGBellive

    5 Mart 2009