Salve.
Sto combattendo da giorni con la funzione sort() e speravo che qualcuno poteva darmi una mano.

Sto usando questa funzione per ordinare un vettore di bitset secondo un preciso criterio.

Quindi uso la sintassi:

sort(v.begin(),v,end(),confronta)

dove confronta è una funzione bool che restituisce true o false a seconda di chi va prima.
True se il primo valore che prende la funzione va prima del secondo, False altrimenti.

Ora visto che non funziona perchè non porta a termine l'esecuzione l'ho sostituita con una funzione quadratica di ordinamento:

bool c;
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++){
c=confronta(v[i],v[j]);
if (c==false) swap(v[i],v[j]);
}

in modo da eseguire comunque l'ordinamento ma in tempo quadratico.
In questo modo ottengo l'ordinamento che voglio, quindi confronta da me usata è esatta ai fini dell'ordinamento.

Adesso però non capisco perchè la mia sort() che usa la stessa funzione non va. O meglio non va per tutti i valori che inserisco, ma solo per alcuni.

Qualcuno sa aiutarmi?