Dodanie elementu do dynamicznej tablicy, kiedy nie ma miejsca

0

Zastanawia mnie jedna kwestia. Mam tablice o rozmiarze 10, cała zapelniona. Chcę dodać 1 nowy element do niej - czyli zwiększyć o 1. Robię to tak: tworzę nową tablicę o rozmiarze większym o 1, przepisuję do niej starą tablicę, dodaję element, i podstawiam nową. Czy to jest dobrze? Czy najpierw muszę usunąć starą tablicę żeby do niej nową wpisać?

Kod:

#include <cstdlib>
#include <iostream>
using namespace std;

int main(int argc, char **argv)
{
    int *t1 = new int[10];
    for(int i=0; i<10; i++)
        t1[i] = i+1;

    for(int i=0; i<10; i++)
            cout << t1[i] << " ";
    cout << "\n";

    int *tmp = new int[11];
    for(int i=0; i<10; i++)
        tmp[i] = t1[i];
    tmp[10] = 11;

    delete[] t1; // nie jestem pewnny tej linijki
    t1 = tmp;

    for(int i=0; i<11; i++)
        cout << t1[i] << " ";
    cout << "\n";

    return 0;
}
1

Jest dobrze.
Bez tego delete - będzie wyciek pamięci.

Poza tym, zawsze można napisać mały test który to sprawdzi:

#include <iostream>
using namespace std;
 
int main()
  {
   int_t size=1;
   int *tb=new int[size];
   tb[0]=0;
   while(size<10000000)
     {
      int *tmp=new int[size+1];
      for(int i=0;i<size;++i) tmp[i]=tb[i];
      tmp[size]=size; 
      delete[] tb;
      tb=tmp;
      ++size;
     }
   for(int i=0;i<size;++i) if(tb[i]!=i) cout<<"error "<<(size=i)<<endl;
   delete[] tb;
   return 0;
  }
0

OK dziękuję bardzo zaraz sobie przeanalizuję Twój kod :) Dawno nie pisałem w C++, stąd moje wahania ;)

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