c ++: набор - PullRequest
       46

c ++: набор

1 голос
/ 16 июля 2010

Добрый вечер (в зависимости от того, где вы сейчас находитесь).Я немного запутался с материалом stl для отсортированных наборов ... Я хочу хранить указатели пользовательского класса в моем наборе и хочу, чтобы они сортировались по моему собственному критерию, а не только по размеру указателя.* У кого-нибудь есть идеи, как это сделать?Поскольку это невозможно сделать как operator <(const foo & * rhs, const foo & * lhs) {..}; </p>

Есть предложения?Заранее спасибо и всего наилучшего.

1 Ответ

3 голосов
/ 16 июля 2010
Второй параметр шаблона

std::set - это метод, который он использует для сравнения. Таким образом, вы можете сделать что-то вроде этого:

struct dereference_compare
{
    template <typename T>
    bool operator()(const T* pX, const T* pY) const
    {
        return *pX < *pY;
    }
};

typedef std::set<T*, dereference_compare> set_type;
...