• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Nieznana wielkość tablicy

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
511 wizyt
pytanie zadane 5 grudnia 2019 w C i C++ przez Agnes Użytkownik (990 p.)

Wiem, że wielkość tablicy nie deklarowanej dynamicznie musi być znana na etapie kompilacji, ale czy da się to jakoś obejść w sytuacji, np. kiedy jej wielkość jest zwracana przez funkcję, która zakończyła działanie wcześniej lub gdy ta wielkość musi być podana dopiero przy wywołaniu funkcji?

Czy z tej sytuacji:

double funkcja(double tab[], const int N)
{
	double t[N];
	//...
}

Da się wyjść nie używając dynamicznej alokacji ani wskaźników?

komentarz 5 grudnia 2019 przez j23 Mędrzec (195,220 p.)

Nie. Tak zawsze było (i jest): for (A; B; D) { C }

komentarz 5 grudnia 2019 przez piotrsz109 Stary wyjadacz (13,730 p.)
ok. Dzięki
komentarz 7 grudnia 2019 przez niezalogowany
edycja 7 grudnia 2019

@Agnes, Myślę że tak będzie dużo wygodniej

using vd=std::vector<double>;
vd T(double tab[],size_t N){

    size_t i=0;
    std::vector <double> tt(N);
    while(--N){
        tt.at(i++)=tab[N];
    }
    tt.at(i++)=tab[0];
    return tt;
}

Edit:: a może jednak dynamicznie? http://wklejto.pl/790366

komentarz 7 grudnia 2019 przez j23 Mędrzec (195,220 p.)

@fisker, jak już zrobiłeś alias vd, to powinieneś być konsekwentny i użyć go w linii 5.

Można prościej:

std::vector<double> T(double tab[], size_t N)
{
    return { std::make_reverse_iterator(tab + N), std::make_reverse_iterator(tab) };
}

 

komentarz 7 grudnia 2019 przez niezalogowany
edycja 7 grudnia 2019

Mój błąd z reguły robię później myślę. ale piękna implementacja.

edit::A żeby być konsekwentnym

using vd=std::vector<double>;
vd T(double*tab,size_t N){   
    vd tt(N);
    for(auto &x:tt) x=tab[--N];//tak jak mnie uczyłeś :) dawno dawno temu;
    return tt;   
}

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 453 wizyt
pytanie zadane 28 września 2020 w C i C++ przez Whiskey_Taster Pasjonat (15,610 p.)
0 głosów
1 odpowiedź 903 wizyt
pytanie zadane 19 grudnia 2018 w C i C++ przez kamyk2 Początkujący (420 p.)
0 głosów
1 odpowiedź 219 wizyt

93,103 zapytań

142,077 odpowiedzi

321,562 komentarzy

62,445 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...