Witam,
Mam dwa pytania dot. wielkości dynamicznej tablicy i vectora.
Pierwsze pytanie dot. tablicy dynamicznych tj. np. czegoś w stylu:
int* tablica_dynamiczna = new int[100];
.
Moje pytanie brzmi: czy jeśli chcę skrócić taką tablicę o połowę tj. do 50 elementów to czy mogę zrobić coś w stylu:
int* remove_from = &tablica_dynamiczna[50];
delete remove_from;
a dalej operować na indeksach od 0 do 49 tej starej tablicy a później skasować tą starą tablicę tj. delete tablica_dynamiczna;
?
Czy może muszę utworzyć nową tablicę 50 elementową -> przekopiować interesujące mnie wartości i skasować starą?
Pytanie uzupełniające do tego to czy usuwając ostatnie elementy z vectora typu: vec.erase(vec.begin() + 50, vec.end());
zostanie utworzona nowa tablica i przekopiowane wszystkie wcześniejsze elementy, czy jakoś może inaczej się to wykona?
Drugie pytanie dot. vectora - co oznacza metoda reserve? A raczej co ona dokładnie robi?
Czy jeśli zrobię coś w stylu:
vector<int> vec;
vec.reserve(10);
To zostanie już utworzona tablica o rozmiarze 10 elementów? Nie chodzi mi o możliwość odwoływania się do poszczególnych elementów, tylko czy metoda reserve robi coś konkretnego?
Problem dot. takiej sytuacji, że znam maksymalną wielkość tablicy, ale na pewno będzie ona dużo mniejsza.
Z góry dziękuję za pomoc.