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

question-closed Dynamiczne tworzenie listy C++

Object Storage Arubacloud
+1 głos
781 wizyt
pytanie zadane 23 kwietnia 2021 w C i C++ przez Mavimix Dyskutant (8,390 p.)
zamknięte 23 kwietnia 2021 przez Mavimix

Czy można zrobić "dynamiczną" listę w c++? Chodzi mi o to żeby zrobić coś na wzór tego:

std::cout<<"Podaj ile list zrobic: ";
std::cin>>x;

std::list <int> lista[x];

I tu pytanie - czy można (czy powinno się) tak robić? Czy jest na to specjalny zapis, tak jak w przypadku dynamicznych tablic, gdzie z tego co mi wiadomo nie powinno się pisać 

int liczba[n];

tylko powinno być

int* liczba = new int[n];

Jak to wygląda z "dynamicznym" tworzeniem listy?

 

komentarz zamknięcia: Jak w odpowiedzi i komentarzach

1 odpowiedź

+1 głos
odpowiedź 23 kwietnia 2021 przez Eryk Andrzejewski Mędrzec (164,260 p.)

Jeżeli chodzi Ci o alternatywę dla ręcznego alokowania pamięci przez operator new, to w takim wypadku możesz użyć vectora. Konkretnie, korzystając z odpowiedniego konstruktora do określenia rozmiaru tworzonego wektora. Więcej informacji tutaj: https://en.cppreference.com/w/cpp/container/vector/vector

Czyli na przykład:

#include <vector>

int main() {
    std::vector<int> v(10);
    for (int i = 0; i < 10; i++) {
        v[i] = i;
    }
}

Utworzysz sobie w ten sposób wektor dziesięciu intów (można dodatkowo je zainicjalizować jakąś wartością podawaną jako drugi argument).

Sprowadzając to do Twojego pytania, to możesz użyć std::vector<std::list<int>>, choć nie wiem na ile rzeczywiście o to Ci chodziło.

#include <vector>
#include <list>

int main() {
    std::vector<std::list<int>> v(10);
    for (int i = 0; i < 10; i++) {
        v[i].push_back(i);
    }
}

W tym kodzie konstruktory poszczególnych list powinny się wykonać i można używać takiego wektora list. wink

1
komentarz 23 kwietnia 2021 przez Mavimix Dyskutant (8,390 p.)
edycja 23 kwietnia 2021 przez Mavimix

Nie o to mi chodziło. Uzyskałem zadowalający mnie efekt używając struktury:

struct Lista
{
        int wartosc;
};

std::cout<<"Podaj ile list zrobic: ";
std::cin>>x;

Lista* lista = new Lista[x];

Temat do zamknięcia, dzięki za odpowiedź

Podobne pytania

0 głosów
1 odpowiedź 776 wizyt
pytanie zadane 13 października 2018 w JavaScript przez Sobol3k Użytkownik (690 p.)
0 głosów
1 odpowiedź 199 wizyt
pytanie zadane 8 maja 2019 w C i C++ przez Ryszard Kałuziński Początkujący (280 p.)
0 głosów
1 odpowiedź 285 wizyt
pytanie zadane 9 maja 2020 w C i C++ przez chomik1 Nowicjusz (140 p.)

92,568 zapytań

141,422 odpowiedzi

319,642 komentarzy

61,957 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...