Skocz do zawartości

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

piotrekn

[C++] Tablice o nie-stałym rozmiarze w Visual Studio

Polecane posty

Jestem szczęśliwym (w dużej mierze) użytkownikiem Visual Studio C++ 2010 Express i mam mały problem z tablicami, których rozmiar zależy od wartości zmiennej (np. wprowadzonej przez użyszkodnika), a mianowicie kompilator nie chce takiej deklaracji przepuścić. Pytanie moje brzmi: gdzie to wyłączyć?

Link do komentarza
Udostępnij na innych stronach

cin>>n;
int array[n];

nie zadziała, bo to niezgodne ze standardem, i tablice są alokowane wcześniej.

do czegoś takiego możesz użyć:

int *array,n;
cin>>n;
array = new int[n];

lub vectora, który sam się powiększa kiedy brakuje mu miejsca.

Link do komentarza
Udostępnij na innych stronach

Czemu się dziwisz że nie puszcza skoro to sprzeczne z podstawami języka C++ ? Tablica w C/C++ musi posiadać z góry ustalony rozmiar np int tab[5] lub int tab[5] = {0,1,2,3,4,5}. Poczytaj o wskaźnikach i dynamicznej alokacji pamięci, jeżeli chcesz to zrozumieć a nie kopiować gotowy kod bez wiedzy "z kąd to sie k**** wzielo?".

@Hakken

Vector w rękach niedoświadczonej osoby może urosnąć do nieziemskich rozmiarów :P

Link do komentarza
Udostępnij na innych stronach

Tyle wiem. Mimo tego VS takiej metody nie chciał przepuścić. Być może coś gdzieś się z czymś pogryzło, bo wcześniej z C::B na tym samym komputerze miałem też problemy.

A po instalacji VS 2011 problemu nie ma. Innymi słowy, temat do zamknięcia.

Link do komentarza
Udostępnij na innych stronach

@up

W sensie, że visual studio przepuszcza takie coś:

cin>>n;
int arr[n];

?

Czy może nie przepuszcza tego, co napisałem wcześniej ?

Bo nie do końca rozumiem to co teraz napisałeś.

@Herobrine

Cóż, tak to jest z vectorami ;p

Ale dość łatwo załapać jak to działa, wystarczy troszku przeczytać i nic się złego nie stanie.

Link do komentarza
Udostępnij na innych stronach

Visual Studio C++ 2010 niestety ma jeszcze pewne problemy w zgodności ze standardem.

G++ powinien bez problemu przyjąć tablicę o zmiennym rozmiarze.

int n;
cin >> n;
int arr[n];

Trzeba jednak zdawać sobie sprawę z tego, że taki kod jest paskudny, niebezpieczny, nie zalecany.

Link do komentarza
Udostępnij na innych stronach



  • Kto przegląda   0 użytkowników

    • Brak zalogowanych użytkowników przeglądających tę stronę.
×
×
  • Utwórz nowe...