我有一個類ActiveStatusEffect
集合聲明的unordered_set如下:無法排序unordered_set
boost::unordered_set<StatusEffects::ActiveStatusEffect> ActiveStatusEffects;
ActiveStatusEffect定義如下:
class ActiveStatusEffect
{
public:
StatusEffect* effect;
int ReminaingTurns;
bool operator<(const ActiveStatusEffect& ase) const
{
return *effect < *ase.effect;
}
bool operator>(const ActiveStatusEffect& ase) const
{
return *effect > *ase.effect;
}
bool operator==(const ActiveStatusEffect& ase) const
{
return *effect == *ase.effect;
}
bool operator!=(const ActiveStatusEffect& ase) const
{
return !((*this) == ase);
}
};
StatusEffect的之間的比較是一個比較在分配給每個狀態效果實例的唯一整數之間。
但是,如果我嘗試的效果有點像如下:
std::sort(statusSet.begin(), statusSet.end(), [](StatusEffects::ActiveStatusEffect const &se1, StatusEffects::ActiveStatusEffect const &se2){return se1.effect->GetPriority() < se2.effect->GetPriority();});
我得到的算法頭文件中的許多錯誤,如
錯誤198錯誤C2784: 「_Base1 :: difference_type std :: operator - (const std :: _ Revranit < _RanIt,_Base> &,const std :: _ Revranit < _RanIt2,_Base2> &)':無法推導出templ吃 參數關於 '常量 的std :: _ Revranit < _RanIt,_base> &' 從 '升壓:: unordered_detail :: hash_const_iterator' C:\程序 文件(86)\微軟的Visual Studio 10.0 \ VC \包括\算法3806
錯誤199錯誤C2784: '_Base1 :: difference_type的std ::操作者 - (常量性病:: _ Revranit < _RanIt,_base> &,常量性病:: _ Revranit < _RanIt2,_Base2> &)':無法推導模板 參數'const std :: _ Re vranit < _RanIt,_base> &「從 '的boost :: unordered_detail :: hash_const_iterator' C:\程序 文件(x86)\微軟的Visual Studio 10.0 \ VC \包括\算法3806
我爲什麼無法排序集?我很確定這是關於unordered_set的一些問題,因爲刪除嘗試將其排序或更改爲向量不會產生錯誤。
如果該集合是**無序的**你將如何排序(例如**命令**)它呢? – Jordan 2011-05-10 23:03:35
不知何故,這真的讓我笑了...一定是現在是凌晨2點的時候,所以... – RedX 2011-05-10 23:57:40