Czyszczenie zawartości vektora.

0

Witam,
wiem, może to banalne pytanie, ale chciałbym wyczyścić (usunąć wszystkie dane z wektora) i pozostawić go w takim stanie jaki był po utworzeniu (chcę go potem dalej używać).
Jak to zrobić?
Gdy programowalem w jakimś innym języku wystarczyło:

 zmienna = new typ_zmiennej;

natomiast w C++ tak się nie da :P

0

http://www.cplusplus.com/reference/stl/vector/

chyba, że wektorem nazywasz coś innego. Poczytaj jakąś książkę albo tutek bo "na czuja" języka się nie nauczysz :]

0

Ale jak proponował byś mi szybko usunąć jego zawartość?

0

Zajrzales w ogole na strone dana przez bee? Chyba nie bo tam masz dokladnie opisane funkcje klasy vector(nawet z przykladami). W tym czyszczenie...

0

Wybaczcie przeoczyłem.

myvector.clear(); 
0

to nie zwalnia pamieci tylko go czysci - vector tylko realokuje pamiec jak mu jej brakuje, a w druga strone to nie dziala. jesli by interesowalo Cie rowniez zeby zwolnil pamiec to:

vector<X> aaa;
//tutaj jakies operacje na aaa
// czyszczenie:
aaa = vector<X>();

w większości przypadków będzie to bezużyteczne, ale czasami zdarza się tworzyć na prawdę duże wektory to wtedy warto je trochę opróżnić

0

albo

vector<Typ> aaa;
(...)
vector<Typ>().swap(aaa);

poza tym proponowałbym sprawdzić kod:

vector<int> v(100000, 1111111);
cout << static_cast<int>(v.capacity()) << "\n";
    
v = vector<int>();
cout << static_cast<int>(v.capacity()) << "\n";
    
vector<int>().swap(v);
cout << static_cast<int>(v.capacity()) << "\n";

1 użytkowników online, w tym zalogowanych: 0, gości: 1