diff --git a/src/blackmisc/sequence.h b/src/blackmisc/sequence.h index df693f287..dbf724299 100644 --- a/src/blackmisc/sequence.h +++ b/src/blackmisc/sequence.h @@ -339,6 +339,45 @@ namespace BlackMisc else { push_back(replacement); } } + /*! + * \brief In-place sort by a given comparator predicate. + * \param p + */ + template void sort(Predicate p) + { + std::sort(begin(), end(), p); + } + + /*! + * \brief In-place sort by a particular key. + * \param key1 A pointer to a member function of T. + */ + template void sortBy(K1 key1) + { + sort(BlackMisc::Predicates::MemberLess(key1)); + } + + /*! + * \brief In-place sort by some particular keys. + * \param key1 A pointer to a member function of T. + * \param key2 A pointer to a member function of T. + */ + template void sortBy(K1 key1, K2 key2) + { + sort(BlackMisc::Predicates::MemberLess(key1, key2)); + } + + /*! + * \brief In-place sort by some particular keys. + * \param key1 A pointer to a member function of T. + * \param key2 A pointer to a member function of T. + * \param key3 A pointer to a member function of T. + */ + template void sortBy(K1 key1, K2 key2, K3 key3) + { + sort(BlackMisc::Predicates::MemberLess(key1, key2, key3)); + } + /*! * \brief Return a copy sorted by a given comparator predicate. * \param p @@ -348,7 +387,7 @@ namespace BlackMisc CSequence sorted(Predicate p) const { CSequence result = *this; - std::sort(result.begin(), result.end(), p); + result.sort(p); return result; }