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

  • Adam Washington

    Adam Washing

    12 Mayıs 2006
  • Jorrit Jongma

    Jorrit Jongm

    17 Ocak 2008
  • Ryan Billy

    Ryan Billy

    30 EKİM 2006