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

  • BaaaStuds's channel

    BaaaStuds's

    10 Mart 2009
  • ELPRESADOR

    ELPRESADOR

    21 HAZİRAN 2008
  • Kontor.TV

    Kontor.TV

    14 Mart 2006