Skip to content

Commit

Permalink
Rozpisanie się o wektorach
Browse files Browse the repository at this point in the history
  • Loading branch information
pktiuk committed Mar 29, 2024
1 parent 4757e8d commit b8dfb9b
Showing 1 changed file with 72 additions and 2 deletions.
74 changes: 72 additions & 2 deletions docs/C i C++ 🇨/1_cpp.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,77 @@

Oficjalna dokumentacja i zalecenia: [ISO CPP GUIDELINES](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines)

## Elementy języka i jego mechanizmy
## Dane i struktury

### Proste typy danych

Proste typy zmiennych:

- `int` - liczba całkowita
- `float` - liczba zmiennoprzecinkowa
- `double` - liczba zmiennoprzecinkowa podwójnej precyzji
- `char` - pojedynczy znak
- `bool` - wartość logiczna
- `void` - brak wartości

### Kontenery

W bibliotekach standardowych C++ mamy następujące typy kontenerów:

- Sekwencyjne
- `vector` - jednowymiarowa tablica
- `string` - jednowymiarowa tablica
- `list` - lista dwukierunkowa
- `deque` - kolejka o dwu końcach
- Asocjacyjne
- `set` - usuwa elementy równoważne
- `map` - tablica asocjacyjna (słownik)
- `multiset` - nie usuwa el. równoważnych
- `multimap` - klucz może występować wielokrotnie
- Haszujące (unordered\_)
- `unordered_set`
- `unordered_map`
- `unordered_multiset`
- `unordered_multimap`

Można też je podzielić względem tego na czym bazują:

- Tablice: vector, string, array
- Węzły: list, set, map, multiset, multimap, unordered_set, unordered_map, unordered_multiset, unordered_multimap

Kontenery biblioteki standardowej operują na kopiach elementów. W przypadku, gdy chcemy operować na oryginalnych elementach, należy użyć wskaźników lub referencji.

#### Vector

Podstawowym kontenerem w C++ jest `std::vector`, który jest odpowiednikiem tablicy dynamicznej w C.

```cpp
#include <vector>
std::vector <int> zero_vector(5); //wektor zainicjalizowany 5 zerami

//wektor zainicjalizowany podanymi wartościami
std::vector<int> numbers = {1, 2, 3, 4, 5};

numbers[0] = 10; //zmiana wartości pierwszego elementu
```
Metody dostępu (mogą być używane także do zmieniania wartości):
- `at(index)` - zwraca element na danym indeksie (w razie problemów rzuca wyjątek [`std::out_of_range`](https://cplusplus.com/reference/stdexcept/out_of_range/))
- operator `[]` - zwraca element na danym indeksie (nie sprawdza czy indeks jest poprawny)
- `front()` - zwraca pierwszy element
- `back()` - zwraca ostatni element
Metody modyfikujące:
- `push_back(elem)` - dodaje element na koniec
- `pop_back()` - usuwa element (nie zwraca go).
- `size()` - zwraca ilość elementów
- `clear()` - usuwa wszystkie elementy
#### Ciągi znaków `std::string`
## Mechanizmy języka
### Zarządzanie pamięcią `new` i `delete`
Expand Down Expand Up @@ -152,7 +222,7 @@ int main()

program wypisze:

```
```log
Wołanie konstruktora
funkcja_zwykla:
Wołanie konstruktora kopiującego
Expand Down

0 comments on commit b8dfb9b

Please sign in to comment.