no teraz to już mam mindfuck... wracam następnego dnia do kodu, kopiuję go aby wrzucić na forum usuwając jakieś drobne fakapy i co? nagle magicznie drugi iterator zaczął działać! Wcześniej rzucało mi w miejscu drugiej pętli wyjątek, ale nie pamiętam treści (debugger pokazywał wartość it2 jako (???)).
void sel_sort(std::vector<int> &V) {
//edit: usunąłem nieużywaną zmienną
std::vector<int>::iterator it;
std::vector<int>::iterator it2;
for (it = V.begin(); it != V.end() - 1; ++it) {
std::vector<int>::iterator smallest = it; // smallest ma indeks it?
for (it2 = it + 1; it2 < V.end() - 1; ++it2) // wcześniej tu rzucało wyjątek it2 = (???), a teraz już nie...
if (*it2 < *smallest) //jeżeli wartość spod it2 jest mniejsza niż.. wartość spod smallest, której nie ma?
*smallest = *it2;
std::swap(*it2, *smallest);
}
}
Teraz się kompiluje, wow. Tylko, że błędnie, jak zwykle. Nie wiem jak uzyskać aktualny indeks iteratora, aby potem w std::swap zamienić miejscami iterator :v