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

Typ wyliczeniowy i biblioteka dynamiczna

Object Storage Arubacloud
0 głosów
233 wizyt
pytanie zadane 17 listopada 2015 w C i C++ przez Avernis Nałogowiec (27,400 p.)
Jak mogę wykożystać typ wyliczeniowy (enum), i bibliotekę vectorową. Mogę po prośic o jakieś poradniki po polsku bo od miesiąca prubuję to zrozumieć, ale nie umiem.

2 odpowiedzi

+2 głosów
odpowiedź 17 listopada 2015 przez niezalogowany
wybrane 17 listopada 2015 przez Avernis
 
Najlepsza
Ale że co? Bo nie rozumiem. Możliwe, że o czymś nie wiem, ale ja zupełnie nie zrozumiałem o co ci chodzi. Czy nie wiesz czym jest enum i vector?
komentarz 17 listopada 2015 przez Avernis Nałogowiec (27,400 p.)
wiem że vector to tablica dynamiczna, ale nie umiem jej używać, a enym, w ogóle nie wiem do czego służy
komentarz 17 listopada 2015 przez niezalogowany
Vector to tak jak powiedziałeś tablica dynamiczna, która potrafi w każdej chwili zmienić swój rozmiar, w przeciwieństwie do zwykłej tablicy. Używanie vectora jest takie same, jak tablicy, też masz po prostu podać index i tyle (czyli np. mojVector[5]). Jedyne co się na zewnątrz różni, to deklaracja i funkcje (bo vector to tak na prawdę klasa, ale jak nie chcesz za bardzo wiedzieć jak to działa, to nie musisz sobie tym zaprzątać głowy ;)). Deklaracja różni się tym, że w ostrych nawiasach musisz podać typ:
int zwyklaTablica[10]; //stworzenie zwyklej tablicy 10-cio elementowej
Vector<int> zarabistyVector; //stworzenie vectora na typ int
Teraz funkcje. Żeby zmniejszyć bądź zwiększyć rozmiar vectora, to musisz użyć funkcji push_back() (czyli wepchnij na koniec) albo pop_back() (dosłownie: pyknij ostatni element, jak bąbelka :)). Są też inne funkcje np. erase() (usuwa element po podaniu indeksu, a nie ostatni, tak jak w pop_back()), empty() (zwraca true, jeśli nic w vectorze nie ma) i jeszcze parę innych, których się używa trochę rzadziej. Myślę, że nie ma tu nic trudnego :)

Typ wyliczeniowy (czyli enum) to... Hm, przytoczę coś z ,,Symfonii C++": ,,To bardzo ciekawa rzecz. Jest to osobny typ dla wybranego przez nas zestawu stałych całkowitych (wtrące tylko, że to po prostu zwykła liczba, można by powiedzieć, że int), a przydaje się on w wielu sytuacjach". A teraz napiszę w skrócie co pisze dalej: enum przydaje się, jak nie chcemy zapisać czegoś za pomocą liczb, tylko informacji, no, po prostu słów. Wtedy wszystko wygląda czytelniej, enum nie jest niezbędny, ale dzięki niemu uatrakcyjniamy i upraszczamy nasz kod, tak jak switch. Przykład:
int liczba=1;
if(liczba==1)
    //blablabla...
else if(liczba==2)
    //blabla blabla...

enum MojTypWyl{Ojciec,Matka,Siostra,Brat};
MojTypWyl rodzina=Matka;
if(rodzina==Matka)
    //blablabka
else if(rodzina==Brat)
    //blabla blabla
Widać, że kod jest jakby bardziej zrozumiały dla kogoś, kto nawet programować nie umie. Ale jeszcze coś - jak zauważyłeś, najpierw robimy enum MojTypWyl, a potem MojTypWyl rodzina. To jest jakby tworzenie klasy, a potem obiektu tej klasy. I tego póki co się trzymaj ;) Pamiętaj, że po napisaniu enum MojTypWyl nie masz żadnego typu wyliczeniowego, masz tylko projekt. I jeszcze coś - w enum zaczynamy wyliczanie od 0. A jak zmienimy cyfrę, to liczymy dalej od tamtej cyfry. Już tłumaczę:
enum MojTypWyl{Ojciec,Matka,Siostra=4,Brat,Ciocia=25,Wujek};
Wygląda to tak: w enum'ach wylicza się (w końcu to typ wyliczeniowy) od 0, jeśli na początku nie ustawiłeś żadnej innej wartości. My nie ustawiliśmy, bo jak widać jest tylko Ojciec, a nie Ojciec=... . Skoro następne wartości to będą kolejne liczby (bo wyliczamy), to Matka będzie równa... Tak! Dokładnie! Będzie równa 1 :) Potem do Siostry przypisujemy 4. W takim razie Brat to będzie 5. Z Ciocią i Wujkiem możesz już się skapnąć o co chodzi ;) Możesz spytać po co takie numerowanie. Odpowiadam: w sumie to nie wiem, w nie każdych sytuacjach takie coś się przydaje, czasem wystarczy STOI,CHODZI,BIEGA,LEZY bez żadnego przypisywania, ale są różne sytuacje, czasem się przyda, a czasem nie :)

Ufff, to się rozpisałem! Mam nadzieję, że już wszystko zrozumiałeś ;)
0 głosów
odpowiedź 17 listopada 2015 przez Rogargol Pasjonat (16,600 p.)

enum to typ wyliczeniowy, w ktorym mozesz ustawic kilka stalych do ktorych przypiszesz wartosc, lub wartosc przypisze sie automatycznie.

Np piszac gre moglbys uzyc takiego enuma zeby okreslic kierunek poruszania sie postaci:

enum Kierunek{
GORA,
DOL
LEWO,
PRAWO
}

pozniej mozesz zrobic:

Kierunek kierunekPostaci;

kierunekPostaci = GORA;

Mozesz tez uzyc go w ten sposob:

enum{
GORA,
DOL,
LEWO,
PRAWO
}

i uzywac tych nazw jako wartosci. np:

int kierunek;
kierunek = GORA;

 

Vector to kontener na dane, na poczatek najlatwiej bedzie Ci skojarzyc go z tablica ktorej nie musisz ustawiac wielkosci, tylko mozesz dowolnie dodawac i usowac kazde pole. 

To w duzym skrocie, mysle ze bez sensu sie rozpisywac, jest masa dobrych kursow C++ w internecie, wystarczy zapytac wujka google.

 

komentarz 17 listopada 2015 przez Avernis Nałogowiec (27,400 p.)
A czym to się różni od zwykłej stałej?
komentarz 17 listopada 2015 przez Damian11131 Stary wyjadacz (13,490 p.)
Wartość jest przypisywana automatycznie, czyli gdy nie zainicjalizujesz stałej żadną wartością, to automatycznie zostanie zainicjalizowana zerem. Każda stała jest inicjalizowana wartością poprzedniej stałej +1 (tej, co jest przed nią), no chyba, że wpiszesz tam jakąś swoją wartość.
komentarz 17 listopada 2015 przez Avernis Nałogowiec (27,400 p.)

chodzi o enuma nadal, czy o zwykłą stałą? angel

komentarz 17 listopada 2015 przez Damian11131 Stary wyjadacz (13,490 p.)
O enuma- to jest różnica między enumem a zwykłą stałą.
komentarz 17 listopada 2015 przez Rogargol Pasjonat (16,600 p.)
No i tak jak widzisz, w pierwszym przypadku tworzysz w zasadzie nowy typ zmiennej, ktora moze przechowywac tylko okreslone przez Ciebie wartosci. Dzieki temu unikasz bledow.

Podobne pytania

+1 głos
1 odpowiedź 492 wizyt
pytanie zadane 16 stycznia 2016 w C i C++ przez konrad99 Gaduła (4,090 p.)
0 głosów
1 odpowiedź 140 wizyt
pytanie zadane 12 listopada 2015 w C i C++ przez emSon Stary wyjadacz (10,480 p.)
0 głosów
4 odpowiedzi 607 wizyt
pytanie zadane 7 maja 2020 w C i C++ przez dominik195k Obywatel (1,030 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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!

...