struct Keyword
{
std::string keyword;
int numUses;
};
bool sortingVector(const Keyword& key1, const Keyword& key2)
{
return key1.numUses < key2
Put std::
in front of your sort
call. And #include <algorithm>
at the top of the source file.
are you using namespace std;
? if not you want std::sort()
You probably want to call std::sort
instead of plain sort and might have to include the appropriate header file (algorithm
unless I'm mistaken).
This is what a compilable example should look like:
Because you did not provide the exact code that was generating the errors people have given a couple of different types of answer. As a result it is generally a good idea to generate a compilable example the displays the problem.
#include <algorithm>
#include <vector>
#include <string>
struct Keyword
{
std::string keyword;
int numUses;
};
bool sortingVector(const Keyword& key1, const Keyword& key2)
{
return key1.numUses < key2.numUses;
}
int main()
{
std::vector<Keyword> topKeywords;
std::sort(topKeywords.begin(), topKeywords.end(), sortingVector);
}
Generally the compiler can do a better job of optimising (I am told) if you use a functor rather than a function pointer.
struct SortingVectorFunctor
{
bool operator()(const Keyword& key1, const Keyword& key2) const
{
return key1.numUses < key2.numUses;
}
};
#include <vector>
#include <algorithm>
#include <string>
struct Keyword
{
std::string keyword;
int numUses;
};
bool sortingVector(const Keyword& key1, const Keyword& key2)
{
return key1.numUses < key2.numUses;
}
int main()
{
std::vector<Keyword> topKeywords(100);
// imagine topKeywords initialization here
std::sort(topKeywords.begin(), topKeywords.end(), sortingVector);
return 0;
}
Compiles fine on my machine (gcc version 4.4.3).
Is sortingVector
a non-static member of some class? The error message suggests that it is, in which case you will need to wrap it (using boost::bind
, for example) into a binary operation that doesn't take a this
parameter. You might want to make sortingVector
a static member or a free function instead.