Is it possible to force STL set to reevaluate predicate?
up vote
18
down vote
favorite
3
Consider the following data structures and code. struct Sentence { std::string words; int frequency; Sentence(std::string words, int frequency) : words(words), frequency(frequency) {} }; struct SentencePCompare { bool operator() (const Sentence* lhs, const Sentence* rhs) const { if (lhs->frequency != rhs->frequency) { return lhs->frequency > rhs->frequency; } return lhs->words.compare(rhs->words) < 0; } }; std::set<Sentence*, SentencePCompare> sentencesByFrequency; int main(){ Sentence* foo = new Sentence("foo", 1); Sentence* bar = new Sentence("bar", 2); sentencesByFrequency.insert(foo); sentencesByFrequency.insert(bar); for (Sentence* sp : sentencesByFre...