Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

reserve()

Ostatnio zmodyfikowano 2014-07-19 18:10
Autor Wiadomość
unkn9wn
Temat założony przez niniejszego użytkownika
reserve()
» 2014-07-19 17:59:05
Pytanie odnośnie przykładu:

C/C++
vector < int > container;
//container.reserve(20);
cout << "container.size(): " << container.size() << endl;
cout << "container.capacity(): " << container.capacity() << endl;
for( int i = 0; i < 501; i++ )
     container.emplace_back( i );

for( auto it = container.begin(); it != container.end(); it++ )
     cout <<( * it ) << " ";

cout << endl;

cout << "container.size(): " << container.size() << endl;
cout << "container.capacity(): " << container.capacity() << endl;
cout << "rozmiar kontenera wraz z elementami w bajtach: " << container.capacity() * sizeof( int ) + sizeof( container ) << endl;
 
nie rezerwując, tworząc 501 elementów, capacity() wynosi 711 elementów
rezerwując miejsce na 500 elementów i przekraczając zarezerwowaną pamięć, czyli tworząc element 501, zarezerwowane zostaje miejsce na 750 elementów,
rezerwując 20 elementów i tworząc 501 elementów capacity() wynosi 505


Czyli reserve() zmienia także liczbę, o którą będzie dodatkowo realokowana pamięć dla kontenera, w przypadku osadzania więcej elementów?
P-114065
pekfos
» 2014-07-19 18:10:02
Czyli reserve() zmienia także liczbę, o którą będzie dodatkowo realokowana pamięć dla kontenera, w przypadku osadzania więcej elementów?
Może tak, a może nie. To nie ma znaczenia - zależne od implementacji kontenera.
P-114068
« 1 »
  Strona 1 z 1