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

  • FlippinWindows | #1 Windows Tutorial Channel!

    FlippinWindo

    23 Mayıs 2010
  • Jason Parker

    Jason Parker

    14 Aralık 2009
  • MrChiCity3

    MrChiCity3

    14 NİSAN 2008