#include <iostream>
#include <algorithm>
#include <vector>
std::vector <int> mergesort(std::vector <int> list)
{
int n = list.size();
if(n == 1)
{
return list;
}
std::vector<int> v2(list.begin(), list.begin() + list.size()/2),
v3(list.begin() + list.size()/2, list.end());
v2 = mergesort(v2);
v3 = mergesort(v3);
return merge(v2, v3);
}
std::vector <int> merge(std::vector <int> list1, std::vector <int> list2)
{
std::vector <int> list3;
while(list1.size() > 0 && list2.size() > 0)
{
if(list1[0] > list2[0])
{
list3.push_back (list2[0]);
list2.erase (list2.begin());
}
else
{
list3.push_back (list1[0]);
list1.erase (list1.begin());
}
}
while(list1.size() > 0)
{
list3.push_back (list1[0]);
list1.erase (list1.begin());
}
while(list2.size() > 0)
{
list3.push_back (list2[0]);
list2.erase (list2.begin());
}
return list3;
}
int main()
{
}
Ich bin ein Fehler in Zeile 16 und der Fehler immer ist:keine passende Funktion für Aufruf von ‚merge (std :: vector <int> & std :: vector <int> &)
No matching function for call to 'merge(std::vector<int>&, std::vector<int>&)
Am Ich mache etwas falsch mit der Rückkehr merge(v2,v3);
?
Ist es mit etwas mit Zeigern durch die Beurteilung des Fehlers?
Ich habe versucht, als Zeiger Vektor zu erklären, ob das funktionieren würde, aber es nicht tut.
Vielen Dank, es funktioniert! – Auriga