Iteratory - element minimalny

0

Cześć, mam problem z warunkiem w zadaniu. Calem zadania jest stworzenie dwóch FUNKCJI, które w wektorze znajdą najmniejszy element, jedna funkcja na iteratorach modyfikujących druga na niemodyfikujących. Problem pojawia się przy warunku zadania : jeżeli taki element (najmniejszy) nie istnieje, funkcja zwraca końcowy iterator wycinka. (np. {2,2,2,2,2}). Nie wiem gdzie i jak to wcisnąć. Można tylko używać #include vector. Niżej załączam moje wypociny.

#include <vector>
#include <iostream>

std::vector<int>::iterator min_element(std::vector<int>::iterator b, std::vector<int>::iterator e) {	
	while ( b < e) { 
		auto min = b;
		for (auto iterator = b; iterator < e; ++iterator){
			if(*iterator < *min){
				min = iterator;
			}
			}
		return min;
	}
	}
}
std::vector<int>::const_iterator min_element(std::vector<int>::const_iterator b, std::vector<int>::const_iterator e) {
 	while ( b < e) { 
		auto min = b;
		for (auto iterator = b; iterator < e; ++iterator){
			if(*iterator < *min){
				min = iterator;
			}
		}
		return min;
}
int main() {
	std::vector<int> vector {2,2,2,2,2,2};
	std::vector<int>::iterator result1 = min_element(vector.begin(), vector.end());
	std::vector<int>::const_iterator result2 = min_element(vector.cbegin(), vector.cend());
	std::cout << result1 - vector.begin() << " " << result2 - vector.cbegin() << std::endl; 
}
1

jeżeli taki element (najmniejszy) nie istnieje

Element najmniejszy w zbiorze niepustym ze zdefiniowaną relacją nierówności dla jego elementów zawsze istnieje, co najwyżej może być ich więcej niż jeden.

4

Element najmniejszy w zbiorze zawsze istnieje gdy jest to zbiór niepusty, natomiast w zbiorze pustym nie ma żadnych elementów a co za tym idzie nie ma najmniejszego elementu.
Czyli w skrócie jeśli dostaniesz pusty wektor to masz zwrócić iterator na koniec wektora.
Polecam ci zajrzeć do dokumentacji std::min_element (https://en.cppreference.com/w/cpp/algorithm/min_element) wyjaśni ci jak oni to rozwiązali w STL

Edit:
Prawdopodobnie to co napisałem i przekreśliłem to moja głupota, tak czy siak polecam ci zajrzeć do dokumentacji która załączyłem, ona powinna ci rozjaśnić o co chodzi

1 użytkowników online, w tym zalogowanych: 0, gości: 1