Jak zamienić iteratory miejscami?

0

Cześć,
napisałem funkcję, która powinna zamieniać dwa iteratory miejscami, ale tego nie robi :D moje podejrzenie pada albo na warunek, albo na samą funkcję std::iter_swap :P

void showSortedV(std::vector<int> & V) {
	std::vector<int>::iterator it;
	std::vector<int>::iterator sit;
	for (it = V.begin(); it != V.end(); ++it) {
		for (sit = V.begin(); sit < V.end() - 1; ++sit) {
			if (*sit > *sit + 1) //nie spelnia ani razu?
				std::iter_swap(sit, sit + 1); 
		}
	}
	copy(V.begin(), V.end(), std::ostream_iterator<int, char>(std::cout, " "));
}

output wypluwa mi na ekran nieposortowaną tablicę. help :P
A, no i pisane pod standard 98, więc wiem, że są tu rzeczy deprecated, ale taki właśnie będę miał na maturze, więc ćwiczę żeby nie było milutkiego zaskoczenia ;__;

0
           if (*sit > *sit + 1) //nie spelnia ani razu?

jeżeli w vectorze masz tylko inty dodatnie to raczej nie :P

2
if (*sit > *(sit + 1))

priorytet operatorów

0

A ja nie rozumiem czemu nie używasz std::sort jeśli używasz std::copy i std::iter_swap?
Poza tym ta funkcja jest bezsensu, bo robi za dużo (i to słabo powiązane rzeczy). Ja bym ją podzielił na cześć wypisująca dane i sortującą.

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