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

  • Atlantic Records

    Atlantic Rec

    15 Aralık 2006
  • BASS212M

    BASS212M

    15 Temmuz 2009
  • stewmurray47

    stewmurray47

    1 Kasım 2006