SORU
20 Kasım 2008, PERŞEMBE


Bir STL listesi temizlik/işaretçiler vektör

C güvenli bir şekilde işaretçiler vektör ya da bir listesini temizlemek için yapabildiğin en kısa parça nedir? (Ara varsayarak işaretçileri sil?)

list<Foo*> foo_list;

Oldukça akıllı işaretçiler ile benim işaretçiler Artırmak şal kullanmak istiyorum.

CEVAP
20 Kasım 2008, PERŞEMBE


std::list<T*> kullanmak için:

while(!foo.empty()) delete foo.front(), foo.pop_front();

std::vector<T*> kullanmak için:

while(!bar.empty()) delete bar.back(), bar.pop_back();

std::list back yerine front yukarıdaki neden aldığımı bilmiyorum. Daha hızlı olduğunu hissediyorum. Ama aslında her ikisi de sabit zaman :). Yine de bir işlevi içine sarın ve eğlenin

template<typename Container>
void delete_them(Container& c) { while(!c.empty()) delete c.back(), c.pop_back(); }

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • newreleaseblitz

    newreleasebl

    13 Ocak 2010
  • Shon Gonzales

    Shon Gonzale

    5 EKİM 2014
  • UKF Dubstep

    UKF Dubstep

    29 NİSAN 2009