【发布时间】:2018-10-03 20:39:51
【问题描述】:
考虑以下代码块:
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 中获取最大元素,就 preferences 向量的大小而言?
即,我想从 graph 中根据 preferences 的大小按降序选择元素。
我考虑过使用std::max_element( ),但它似乎不适用于上述代码,因为我使用的是来自自定义类的对象向量,其中没有属性可以直接通知编译器要考虑什么向量中更大或更小的元素。
感谢您的帮助。
【问题讨论】:
标签: c++ vector max user-defined-types