Die C ++ - Vorlage akzeptiert keine Iteratoren
Ich lerne C ++ neu und probiere zunächst einen einfachen Algorithmus aus: QuickSort. Meine Funktion hat diese Signatur:
template <class T>
void QSort(typename std::vector<T>::iterator begin, typename std::vector<T>::iterator end)
Und es heißt in meiner Hauptfunktion:
int main()
{
std::vector<int> unsort({56,32,11,45,67,81,12,5});
std::vector<int>::iterator b=unsort.begin();
std::vector<int>::iterator e=unsort.end();
QSort(b, e);
return 0;
}
Und gibt diesen Fehler:
C:\Users\Deus\Projects\QSort\main.cpp||In function 'int main()':|
C:\Users\Deus\Projects\QSort\main.cpp|49|error: no matching function for call to 'QSort(__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >&, __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >&)'|
||=== Build finished: 1 errors, 0 warnings ===|
Es scheint, dass der Compiler Probleme hat, das zu bestimmen, was T sein soll. Gibt es eine Möglichkeit, das zu tun, was ich versuche, oder sollte ich die Argumente einfach als Typ T deklarieren und mit der daraus resultierenden Unsicherheit arbeiten?