Chciałem zrobić funkcje sortującą elementy vectora. Dodam, że to jest vector obiektów. Niestety wyrzuca mi dziwne błędy. (tak, wiem, że ona sortuje cały wektor i nie mam innej możliwości, tak ma być).
template <class U>
void quicksort(vector<U> &tab,int left, int right)
{
int os=tab[tab.size()/2].def;
int p=0,q=tab.size()-1;
U tmp; //to bedzie dzialac?
do
{
while(tab[p].def<os) p++;
while(tab[q].def>os) q--;
if(tab[p].def<=tab[q].def)
{
tmp=tab[p];
tab[p]=tab[q];
tab[q]=tmp;
p++;
q--;
}
}
while(p<=q);
if(q>0) quicksort(tab, left, q);
if(p<tab.size()-1) quicksort(tab, p, right);
}
Błędy:
variable or field `quicksort' declared void
template declaration of `int quicksort' ( przeciez jest void! )
`vector' was not declared in this scope (jest dodana biblioteka - #include <vector> )
expected primary-expression before '>' token
`tab' was not declared in this scope
expected primary-expression before "int"
expected primary-expression before "int" (jaki int?! o_O )
//wszystkie powyższe odnoszą się do pierwszej linii, poniższy do drugiej
expected `;' before '{' token