Рассмотрим следующие блоки кода:
template<typename Prefs> class SocialPrefNode{
public:
// Constructors & Destructor
SocialPrefNode( );
SocialPrefNode( char self, std::vector<SocialPrefNode*> pref );
SocialPrefNode( const SocialPrefNode& copy );
~SocialPrefNode( );
// Setters
void set_id( char self );
void set_pref( std::vector<SocialPrefNode*> prefs );
void set_pref( SocialPrefNode& prefs );
void set_worse( std::vector<SocialPrefNode*> wrs );
void set_worse( SocialPrefNode& wrs );
void set_indiff( std::vector<SocialPrefNode*> indiff );
void set_indiff( SocialPrefNode& indiff );
// Getters
char get_id( ){ return id; }
std::vector<SocialPrefNode*> get_preferences( ){ return preferences; }
std::vector<SocialPrefNode*> get_worse( ){ return worsethan; }
std::vector<SocialPrefNode*> get_indiff( ){ return indifference; }
// Operators
SocialPrefNode& operator=( const SocialPrefNode& copy );
private:
char id{ };
std::vector<SocialPrefNode*> preferences{ };
std::vector<SocialPrefNode*> worsethan{ };
std::vector<SocialPrefNode*> indifference{ };
};
и
std::vector<SocialPrefNode<char>> graph
, где последний создается путем наведения его элементов друг на друга.
Как я могу получить максимальный элемент, с точки зрения размера настроек размера вектора, из graph ?
Т.е. я хочу выбрать элементы из graph в соответствии с размером предпочтений 'в порядке убывания.
Я рассмотрел вопрос использования std::max_element( )
, но, похоже, он не применяется к вышеупомянутому коду, поскольку яиспользование вектора объектов из пользовательского класса, в котором отсутствуют свойства, для непосредственного информирования компилятора о том, что следует считать большим или меньшим элементом в векторе.
Спасибо за помощь.