Re: using a member function as a sort predicate
dailos wrote:
I've been dwelling on using a member function as a sort predicate,
as follows:
class foo
{
private:
std::vector<std::string> fileNameList;
bool moreRecentlyCreatedFile(std::string fileName1,
std::string fileName2);
void putInOrder();
};
Some comments here:
1. How does moreRecentlyCreatedFile() use the passed foo object? In case it
doesn't, there is no need for a memberfunction. Note that a function is not
a memberfunction, the latter has one hidden parameter ('this'). If you need
access to private elements of foo, you can make it a class-static function.
2. How does moreRecentlyCreatedFile() modify the passed foo object? In case
it doesn't, it should be const, unless of course point #1 made you make it
a non-memberfunction.
void foo::putInOrder()
{
std::sort(fileNameList.begin(), fileNameList.end(),
&foo::moreRecentlyCreatedFile);
}
The passed function requires three objects, one (hidden and nonconst) foo
object and two strings. Note that this is explained in the FAQ!
I successfully did something similar for for_each algorithm:
for_each(fileNameList.begin(), fileNameList.end(), std::bind1st
( std::mem_fun( &foot::checkFile ), this ));
How could I apply that to two-arguments predicates??
Have you tried doing the same? It's basically the same problem you solved
there.
Uli
--
Sator Laser GmbH
Gesch?ftsf?hrer: Thorsten F?cking, Amtsgericht Hamburg HR B62 932
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]