this is for an assignment so I will be deliberately general. My question is related to implementation decisions I already made–maybe they weren’t good ones.
I have a list of pointers to structs, e.g. list<MyStruct*> bob; At one point I’ve needed to sort these pointers by one of the data members of their targets and I was able to do that easily with
bool sortbyarrival(const MyStruct* a, const MyStruct* b) {
return a->arrival < b->arrival;
}
And then calling bob.sort(sortbyarrival); Works great.
Now somewhere else I need to sort by a different criterion, which involves a counter in the program. I need something like return counter*a->arrival < counter*b->arrival; But the way I just described is the only way I know how to do a sort, I think, and I don’t know how to pass my counter as an additional argument. How can I sort this list of pointers?
ETA: The counter is just a variable in main. So ideally I could call something like bob.sort(sortbyratio, counter); or sort(bob.begin(), bob.end(), sortbyratio, counter);
Similar to ltcmelo’s example, but if the objects themselves don’t contain the counter:
If your counter is an external variable like that though it won’t affect the ordering (at least if it’s positive – thanks onebyone!) – so this may in fact not be necessary at all (or maybe I misunderstand what you’re after?). It’s a useful technique in other cases though.