Czemu ten kod wyrzuca błąd wyjścia iteratora poza zakres? (offset out of range)
problem chyba jest w pętli
wywołuje f(dane)
vector <int> merge(vector <int> veca, vector <int> vecb)
{
vector <int> result;
vector<int>::iterator it1 = veca.begin();
vector<int>::iterator it2 = vecb.begin();
while (it1 < veca.end()-1 && it2 < vecb.end()-1) /* tu dzieje się coś nie tak */
{
if (*it1 < *it2)
{
result.push_back(*it1);
if (it1 < veca.end() - 1)
{
it1 += 1;
}
}
if (*it1 > *it2)
{
result.push_back(*it2);
if (it2 < vecb.end() - 1)
{
it2 += 1;
}
}
}
return result;
}
vector <int> f (vector <int> vec){
if(vec.size()==1){
return vec;
}
else{
int n = vec.size() / 2;
vector <int> a;
vector <int> b;
a.insert(a.begin(), vec.begin(), vec.begin() + n);
b.insert(b.begin(), vec.begin() + n, vec.end());
return merge(f(a), f(b));
}
}