[英]How do I initialize a std::set comparator?
我需要使用另一個類Object的某個對象o初始化基於std :: set的新數據類型TType的一些比較器:
typedef std::set <unsigned int, sortSet(o)> TType
這個聲明是類的(在頭文件中)。 在聲明時,此對象不必存在,稍后將創建它。
class sortSet
{
private:
Object o;
public:
sortSet(Object &oo): o(oo) {}
bool operator() ( const unsigned int &i1, const unsigned int &i2 ) const
{
//Some code...
}
};
如果聲明在某個方法中(當對象已經創建時),情況將非常簡單......我該怎么辦?
模板參數需要是比較器的類型 ,而不是該類型的特定對象; 您可以提供要在std::set
構造函數中使用的特定比較器對象:
typedef std::set<unsigned int, sortSet> TType;
Object o;
TType mySet(sortSet(o));
我不確定我是否理解你的實際問題,但是,使用自定義比較器的一般習慣用法如下所示。
#include <set>
class foo {
public:
int i_;
};
struct foo_comparator {
bool operator()( foo const & lhs, foo const & rhs ) {
return lhs.i_ < rhs.i_;
}
};
typedef std::set< foo, foo_comparator > foo_set;
int main() {
foo_set my_foo_set;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.