MODUŁ 06
Funkcje operujące na wektorach
W funkcjach przyjmujących wektor rozróżniaj trzy role:
W skrócie
W funkcjach przyjmujących wektor rozróżniaj trzy role:
const std::vector<T>&— odczyt istniejących danych bez kopiowania;std::vector<T>&— zmiana wektora przekazanego przez wywołującego;std::vector<T>jako typ zwracany — zwrócenie nowego wyniku, np. filtrowanej kolekcji.
W zadaniu określ, czy kolejność ma zostać zachowana, czy wolno zmieniać wejście oraz co ma zwrócić funkcja dla pustego wektora.
Przykład
Suma, filtr i odwrócenie — trzy role na trzech funkcjach.
long long suma(const std::vector<int>& v) {
long long s = 0;
for (int x : v) s += x;
return s;
}
void odwroc(std::vector<int>& v) {
int n = v.size();
for (int i = 0; i < n / 2; ++i) {
int t = v[i];
v[i] = v[n - 1 - i];
v[n - 1 - i] = t;
}
}
- Filtr buduje nowy wektor i dopisuje pasujące po kolei — kolejność zostaje.
- Odwrócenie zamienia końcówki do środka, bez drugiego wektora.
Pusty wektor to normalny testZdecyduj z góry:
0, pusty wynik, true — i tak napisz.Ćwiczenia
- 1Suma elementówZwróć sumę wszystkich elementów.Otwórz w Pracowni →
- 2Filtruj liczby nieujemneZwróć nowy wektor zawierający wszystkie elementy >= 0 w tej samej kolejności co wejście.Otwórz w Pracowni →
- 3Odwróć wektor w miejscuOdwróć kolejność elementów bez tworzenia drugiego wektora o rozmiarze równym wejściowemu.Otwórz w Pracowni →
Sprawdzian II — moduły 4–6 (9 nowych zadań)
- 1Przeskaluj wektor w miejscuPomnóż każdy element wektora przez mnoznik.Otwórz w Pracowni →
- 2Przenieś wartości z drugiego wektoraDodaj elementy przyrost do odpowiadających im elementów cel.Otwórz w Pracowni →
- 3Usuń wszystkie wystąpieniaUsuń z wektora wszystkie elementy równe x, zachowując kolejność pozostałych elementów.Otwórz w Pracowni →
- 4Przenieś zera na koniecPrzestaw elementy tak, aby wszystkie zera znalazły się na końcu.Otwórz w Pracowni →
- 5Rozdziel minimum i maksimumDla niepustego wektora zapisz najmniejszą wartość do minimum, a największą do maksimum.Otwórz w Pracowni →
- 6Scal dwa posortowane wektoryZwróć nowy, niemalejąco posortowany wektor zawierający wszystkie elementy a i b.Otwórz w Pracowni →
- 7Zmień znak tylko liczb ujemnychZastąp każdą liczbę ujemną jej przeciwnością.Otwórz w Pracowni →
- 8Usuń duplikaty z posortowanego wektoraWejściowy wektor jest posortowany niemalejąco.Otwórz w Pracowni →
- 9Wstaw element do posortowanego wektoraWejściowy wektor jest posortowany niemalejąco.Otwórz w Pracowni →