From MJanik
(Difference between revisions)
|
|
| Line 1: |
Line 1: |
| - |
| |
| | [http://www.if.pw.edu.pl/~majanik/data/JP/2012/makefile.pdf Makefile - instrukcja] | | [http://www.if.pw.edu.pl/~majanik/data/JP/2012/makefile.pdf Makefile - instrukcja] |
| | | | |
| Line 5: |
Line 4: |
| | <hr /> | | <hr /> |
| | | | |
| - | ---+ Kontener STL <code>std::vector</code>
| + | ''' <u>Kontener STL <code>std::vector</code> </u> |
| | | | |
| - | ---++ Czym jest <code>std::vector</code>?
| + | ''' Czym jest <code>std::vector</code>? |
| | <code>std::vector</code> to sekwencyjny kontener z biblioteki STL, który przechowuje elementy w sposób ciągły w pamięci. | | <code>std::vector</code> to sekwencyjny kontener z biblioteki STL, który przechowuje elementy w sposób ciągły w pamięci. |
| | Umożliwia dynamiczne powiększanie i zmniejszanie rozmiaru podczas działania programu. | | Umożliwia dynamiczne powiększanie i zmniejszanie rozmiaru podczas działania programu. |
| | Dostarcza szybki dostęp do elementów przez indeks (operacja O(1)) oraz efektywne dodawanie na końcu (amortyzowane O(1)). | | Dostarcza szybki dostęp do elementów przez indeks (operacja O(1)) oraz efektywne dodawanie na końcu (amortyzowane O(1)). |
| | | | |
| - | ---++ Najważniejsze cechy
| + | ''' Najważniejsze cechy |
| | * Elementy są przechowywane w kolejności dodania. | | * Elementy są przechowywane w kolejności dodania. |
| | * Rozmiar może się zmieniać w trakcie działania programu. | | * Rozmiar może się zmieniać w trakcie działania programu. |
| Line 18: |
Line 17: |
| | * Posiada bogaty zestaw metod do modyfikowania zawartości. | | * Posiada bogaty zestaw metod do modyfikowania zawartości. |
| | | | |
| - | ---++ Najczęściej używane metody
| + | ''' Najczęściej używane metody |
| | * <code>push_back(x)</code> – dodaje element na końcu. | | * <code>push_back(x)</code> – dodaje element na końcu. |
| | * <code>pop_back()</code> – usuwa ostatni element. | | * <code>pop_back()</code> – usuwa ostatni element. |
| Line 26: |
Line 25: |
| | * <code>begin()</code>, <code>end()</code> – iteratory pozwalające przechodzić po wektorze. | | * <code>begin()</code>, <code>end()</code> – iteratory pozwalające przechodzić po wektorze. |
| | | | |
| - | ---++ Przykład użycia
| + | ''' Przykład użycia |
| | <verbatim> | | <verbatim> |
| | #include <vector> | | #include <vector> |
| Line 46: |
Line 45: |
| | </verbatim> | | </verbatim> |
| | | | |
| - | ---++ Kiedy używać <code>std::vector</code>?
| + | ''' Kiedy używać <code>std::vector</code>? |
| | * Gdy potrzebujesz dynamicznej tablicy. | | * Gdy potrzebujesz dynamicznej tablicy. |
| | * Gdy kluczowy jest szybki dostęp do elementów. | | * Gdy kluczowy jest szybki dostęp do elementów. |
| Line 52: |
Line 51: |
| | * Gdy zależy Ci na prostocie i efektywności. | | * Gdy zależy Ci na prostocie i efektywności. |
| | | | |
| - | ---++ Zalety
| + | ''' Zalety |
| | * Bardzo szybki dostęp do elementów. | | * Bardzo szybki dostęp do elementów. |
| | * Kompaktowe przechowywanie danych w pamięci. | | * Kompaktowe przechowywanie danych w pamięci. |
| | * Prosta obsługa i szerokie wsparcie w STL. | | * Prosta obsługa i szerokie wsparcie w STL. |
| | | | |
| - | ---++ Wady
| + | ''' Wady |
| | * Wstawianie elementów w środku jest kosztowne (przesuwanie danych). | | * Wstawianie elementów w środku jest kosztowne (przesuwanie danych). |
| | * Przealokowanie podczas powiększania może czasem kosztować więcej czasu. | | * Przealokowanie podczas powiększania może czasem kosztować więcej czasu. |
| | | | |
| - | ---++ Podsumowanie
| + | ''' Podsumowanie |
| | <code>std::vector</code> to najczęściej używany kontener STL dzięki swojej wydajności, elastyczności i intuicyjności. | | <code>std::vector</code> to najczęściej używany kontener STL dzięki swojej wydajności, elastyczności i intuicyjności. |
| | W większości przypadków stanowi zalecaną strukturę do przechowywania sekwencji danych w C++. | | W większości przypadków stanowi zalecaną strukturę do przechowywania sekwencji danych w C++. |
Revision as of 13:21, 19 November 2025
Makefile - instrukcja
Kontener STL std::vector
Czym jest std::vector?
std::vector to sekwencyjny kontener z biblioteki STL, który przechowuje elementy w sposób ciągły w pamięci.
Umożliwia dynamiczne powiększanie i zmniejszanie rozmiaru podczas działania programu.
Dostarcza szybki dostęp do elementów przez indeks (operacja O(1)) oraz efektywne dodawanie na końcu (amortyzowane O(1)).
Najważniejsze cechy
* Elementy są przechowywane w kolejności dodania.
* Rozmiar może się zmieniać w trakcie działania programu.
* Zapewnia dostęp za pomocą operatora [] i metody at().
* Posiada bogaty zestaw metod do modyfikowania zawartości.
Najczęściej używane metody
* push_back(x) – dodaje element na końcu.
* pop_back() – usuwa ostatni element.
* size() – zwraca liczbę elementów.
* empty() – sprawdza, czy wektor jest pusty.
* clear() – usuwa wszystkie elementy.
* begin(), end() – iteratory pozwalające przechodzić po wektorze.
Przykład użycia
<verbatim>
- include <vector>
- include <iostream>
int main() {
std::vector<int> liczby;
liczby.push_back(10);
liczby.push_back(20);
liczby.push_back(30);
for (size_t i = 0; i < liczby.size(); i++) {
std::cout << liczby[i] << std::endl;
}
return 0;
}
</verbatim>
Kiedy używać std::vector?
* Gdy potrzebujesz dynamicznej tablicy.
* Gdy kluczowy jest szybki dostęp do elementów.
* Gdy dane często dodajesz na końcu kontenera.
* Gdy zależy Ci na prostocie i efektywności.
Zalety
* Bardzo szybki dostęp do elementów.
* Kompaktowe przechowywanie danych w pamięci.
* Prosta obsługa i szerokie wsparcie w STL.
Wady
* Wstawianie elementów w środku jest kosztowne (przesuwanie danych).
* Przealokowanie podczas powiększania może czasem kosztować więcej czasu.
Podsumowanie
std::vector to najczęściej używany kontener STL dzięki swojej wydajności, elastyczności i intuicyjności.
W większości przypadków stanowi zalecaną strukturę do przechowywania sekwencji danych w C++.