Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » 37. virtual Rästel (reinrassiges C++/stl Rätsel)

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
04.08.2003, 23:07 Uhr
virtual
Sexiest Bit alive
(Operator)


Ein Programm hat einen Vektor wie folgt deklariert:

C++:
std::vector<int> v;


In v werden im Programmverlauf 1000000 integer eingefügt. Nach einer Zeit soll der Vector geleert werden (dh alle Element entfernt werden). Dabei soll sicher gestellt werden, daß der überflüssige von v für die Elemente allokierte Speicher auch wirklich freigegeben wurde, v muß aber weiterhin eine gültige Variable sein (dh irgendwelche Tricks mit Blöcken sind tabu). Also etwa so:

C++:
std::vector<int> v(1000000);
for(int i=0; i<1000000; ++i) v.push_back(i);
....
[b]Lösche die Elemente aus dem Vektor und gebe überflüssigen Speicher frei[/b]


Die Aufgabe:
was muß statt der fettgedruckten Zeile in den Quelltext eingefügt werden?
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.08.2003, 12:48 Uhr
virtual
Sexiest Bit alive
(Operator)


Kleiner Nachtrag:
man kann seie Lösung dadurch verfizieren, daß nachher v.capacity() 0 ergeben muß.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.08.2003, 13:17 Uhr
0xdeadbeef
Gott
(Operator)


Looky here:

C++:
std::vector<int> *w = new vector<int>(0);
v.swap(*w);
delete w;


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
05.08.2003, 13:35 Uhr
virtual
Sexiest Bit alive
(Operator)


Jau, richtig:
Der Standard sagt, daß wenn man mit reserve die Capacity eines Vektors verändert (was nur beim Hinzufügen durch zB insert passieren kann), so ist garantiert, daß die Elemente des Vektors solange die gleiche Lage im Speicher haben, bis ein erneutes insert gemacht wird. Das bedeutet in der Umkehrung, daß erase Operationen den Speicher nie verkleinern dürfen.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Rätselecke ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: