Błąd ISO C ++ zabrania tablicy o zmiennej długości

Błąd ISO C ++ zabrania tablicy o zmiennej długości
Tablice o zmiennej wielkości (VLA) nie są zabronione w C ++; Błąd ISO jest poprawny. Tablice wielkości czasu lub zmiennej to inne nazwy dla tablic o zmiennej długości. Rozmiar tych tablic jest ustawiony w czasie wykonywania. Wśród rodzajów, które można aktualizować, są tablice o zmiennej długości i wskaźniki do tablic o zmiennej długości. Zmiennie zmodyfikowane typy należy zdefiniować na poziomie prototypu bloku lub funkcji. Tablice o zmiennej długości są funkcją, która pozwala nam przydzielić automatyczną tablicę o zmiennej wielkości na stosie. W instrukcji typedef można go wykorzystać. Z standardu C ++ C C włącza tablice o zmiennej wielkości. Poniższy program, na przykład, kompiluje i działa idealnie w C. void printArray (int n)

int tablica [n];
//…

int main ()

PrintArray (8);

Jednak tablice o zmiennej wielkości nie są obsługiwane przez standard C ++ (do C ++ 11). Rozmiar tablicy jest stałym wyrażeniem w standardzie C ++ 11. W rezultacie powyższy program może nie być akceptowalnym programem C ++. Ponieważ kompilator GCC ma rozszerzenie, aby je pomieścić, program może funkcjonować z kompilatorem GCC. Jako niewiele, rozmiar tablicy jest teraz prostym wyrażeniem w C ++ 14 (nie stałą ekspresję).

Nie jest pożądane, aby generować potencjalnie dużą tablicę na stosie z ograniczoną przestrzenią. Jeśli nie jesteś świadomy z wyprzedzeniem, napiszemy szkodliwy kod. Tablice o zmiennej długości nie są natywnie obsługiwane w C ++, ponieważ wymagałyby znacznych zmian systemu typu.

Tutaj, w artykule C ++, pokażemy, jak przezwyciężyć błąd C ++ ISO Forbidden Błąd długości zmiennej w czasie kompilacji.

Przykład 1: Program wdrożenia tablicy o zmiennej długości w C ++ z kompilatorem GCC

Tablice o zmiennej długości mogą wybrać dowolny rozmiar, którego pragnie użytkownik, i.mi., Mogą być zmienne pod względem wielkości. Poniżej znajduje się program C ++ do tworzenia tablic o zmiennej długości:

Mamy pliki nagłówka C ++ w pierwszym etapie i pliku przestrzeni nazw. Następnie mamy główną metodę programu, a główny korpus ma deklarację zmienną wskaźnika jako „tablicę”, a druga deklaracja „ARR_SIZE”. Cout drukuje instrukcję, która zapyta użytkownika o liczbę o rozmiar tablicy. Następnie CIN przyjmie wartość liczbową od użytkownika. Zmienna „tablica” jest wywoływana tam, gdzie ustawiliśmy rozmiar tablicy.

Teraz poprosiliśmy również o wartości tablicy od użytkownika. Wartość tablicy będzie iterowana przez pętlę for, aż osiągnie rozmiar tablicy. Następnie druga pętla jest używana do drukowania wartości wewnątrz tablicy, a jednocześnie usunęliśmy tablicę za pomocą wyrażenia Delete [] w programie.

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()
int *tablica, arr_size;
Cout<<"Enter array size: "Arr_size;
Array = new int [arr_size];
Cout<<"Enter array values: "<for (int i = 0; i> tablica [i];
Cout<<"Array: ";
dla (int i = 0; iCout<Cout<powrót 0;

Shell wyświetla komunikat do wprowadzania rozmiaru tablicy po kompilacji. Gdy użytkownik wprowadza rozmiar tablicy, powłoka prosi użytkownika o ustawienie wartości tablicy. Rozmiar tablicy i jej elementów jest dostępny w następujący sposób. Stąd możemy zaimplementować tablicę o zmiennej długości w C ++ bez zabronionego wyjątku.

Przykład 2: Program wdrożenia tablicy o zmiennej długości w C ++ za pomocą wektorów

C ++ STL zapewnia wektor jako alternatywę dla tablic o zmiennej długości. Nadaje się do różnych aplikacji. Będzie bardziej jasne z programem C ++, który wdrożyliśmy poniżej.

Ponieważ musimy używać wektorów w naszym programie. Dlatego najważniejszą częścią jest zdefiniowanie wektora jako pliku nagłówka u góry implementacji kodu. Dodaliśmy plik wektorowy w sekcji nagłówka.

W ramach programu mamy klasę wektorową z typem int, a klasa wektorów ma zmienną „v.”W wektorze dodaliśmy pięć elementów całkowitej liczby całkowitej. Następnie mamy cykl iteracji pętli. Wewnątrz pętli For zadeklarowaliśmy iterator do wektora z nową zmienną „IT.”Następnie zmienna„ IT ”ma funkcję początkową i końcową do wyświetlania elementów wektorów.

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()
wektor V;
v.push_back (10);
v.push_back (20);
v.push_back (30);
v.push_back (40);
v.push_back (50);
for (wektor :: iterator it = v.zaczynać(); To != v.koniec(); it ++)
Cout<< *it <
powrót 0;

Powyższy program daje takie dane wyjściowe.

Przykład 3: Program wdrożenia tablicy o zmiennej długości w C ++ za pomocą STD :: Vector

Wektory służą do przenoszenia porównywalnych typów danych w C++. Rozmiar wektora, w przeciwieństwie do tablic, może rosnąć dynamicznie. Możemy dostosować rozmiar wektora w razie potrzeby w trakcie wykonywania programu. Plik nagłówka Vector musi być zawarty w naszym programie, aby wykorzystać wektory. Po uwzględnieniu biblioteki wektorowej w pliku nagłówka, możemy wykorzystać wektor jako std :: wektor w programie.

Po włączeniu biblioteki wektorowej u góry nazwieliśmy STD :: wektor wewnątrz głównej funkcji programu. Wektor jest deklarowany jako „liczby” i zainicjowany z pięcioma losowymi wartościami liczbowymi. Zmienna „liczba” jest ponownie zdefiniowana, która ma trzy elementy wektorowe z powyższego pojemnika wektorowego. STD :: Cout służy do wyświetlania długości wektora wewnątrz zmiennej „liczba” za pomocą funkcji rozmiaru.

#włączać
#włączać
int main ()

std :: wektorowe liczby = 10, 20, 30, 40, 50;
numery = 30, 40, 50;
STD :: Cout<< "Array Length : " <powrót 0;

Wyjście pokazuje długość określonej tablicy wektorowej w następujący sposób.

Wniosek

Podsumowując! Tutaj mamy szczegółową dyskusję na temat tablic o zmiennej długości we wstępie. Dlatego dowiedzieliśmy się, że C ++ zabrania macierzy o zmiennej długości (VLA). Określiliśmy powyższe sposoby na wdrożenie tablicy o zmiennej długości w C ++ i alternatywnych sposobach tablicy o zmiennej długości. Mogą być przydatne podczas interakcji z tablicami o zmiennej długości w C++.