Я чаще хочу отсортировать вектор указателя на записи, чем просто простые C-строки ...
template<>
struct std::less<const foo*>
{
bool operator()(const foo* lhs, const foo* rhs) const
{
return strcmp(lhs->key, rhs->key);
}
};
Это переопределяет сравнение foo *, так что сравнение по умолчанию работает в сортировке.Для меня этот стиль кажется более декларативным, а другой - более процедурным.Если вам нужно несколько заказов, такое использование по умолчанию проблематично;если вы хотите быть уверены, что все упорядоченные коллекции foo * s в одном и том же порядке, это хорошо.
std::vector<foo*> db;
std::sort(db.begin(), db.end());