ceci est pour une affectation donc je serai délibérément général. Ma question concerne les décisions de mise en œuvre que j'ai déjà prises - peut-être n'étaient-elles pas bonnes.Comment trier une liste lorsque le critère de tri nécessite une variable supplémentaire? C++
J'ai une liste de pointeurs vers des structures, par ex. list<MyStruct*> bob;
À un moment donné, j'ai besoin pour trier ces pointeurs par l'un des membres de données de leurs objectifs et j'ai pu le faire facilement avec
bool sortbyarrival(const MyStruct* a, const MyStruct* b) {
return a->arrival < b->arrival;
}
Et puis en appelant bob.sort(sortbyarrival);
Fonctionne très bien.
Maintenant, ailleurs, j'ai besoin de trier par un critère différent, ce qui implique un compteur dans le programme. J'ai besoin de quelque chose comme return counter*a->arrival < counter*b->arrival;
Mais la façon dont je viens de décrire est la seule façon dont je sais comment faire un tri, je pense, et je ne sais pas comment passer mon compteur comme argument supplémentaire. Comment puis-je trier cette liste de pointeurs? ETA: Le compteur est juste une variable dans main. Donc, idéalement, je pourrais appeler quelque chose comme bob.sort(sortbyratio, counter);
ou sort(bob.begin(), bob.end(), sortbyratio, counter);
est '' list' std :: list', ou un autre type de la STL? – bcat
C'est std :: list, oui. – eom
Je suis confus. Que fait la multiplication des deux côtés par «contre»? – rlbond