如何創建類似std::less<T>
或std::equal_to<T>
等比較模板的類,如std::multiset
和std::set
呢?如何用比較器創建類?
2
A
回答
0
這可能會幫助:
template <class T, class Comparator = std::less<T>>
class MyClass
{
bool compare(const T& lhs, const T& rhs) const { return Comparator()(lhs, rhs); }
// stuff
};
class A
{
public:
bool operator < (const A& rhs) const;
};
MyClass<A> myClass;
0
template <class T, class Comparator = std::less<T>>
class MyClass
{
//...
}
在成員函數,是這樣的: -
void MyClass::Myfun(X x, Comparator mycomp = Comparator())
{
if (mycomp(data1,data2))
//...
}
0
STL容器實際存儲比較的一個實例,所以你想要的是更接近對此:
template <class T, class Comparator = std::less<T>>
class MyClass : private Comparator
{
public:
MyClass() {}
MyClass(const Comparator& compare) : Comparator(compare) {}
bool compare(const T& lhs, const T& rhs) const
{
return static_cast<Comparator>(*this)(lhs, rhs);
}
// stuff
};
class A
{
public:
bool operator < (const A& rhs) const;
};
MyClass<A> myClass;
不是e如果Comparator
不包含任何狀態,則應使用私有繼承來允許空基優化以消除開銷。
相關問題
- 1. 如何使用Boost創建比較器?
- 2. 如何用反射創建比較器類?
- 3. 如何創建混合比較器?
- 4. 如何用四個2位比較器創建一個8位比較器?
- 5. 如何使用通用Treeset創建比較器?
- 6. 如何在Delphi中創建用於比較的類名數組?
- 7. 如何創建一個接受比較器的類(用於Max Heap和Min Heap)?
- 8. 創建和比較兒童類
- 9. 如何在Python中創建比較表
- 10. 如何即時創建比較<>?
- 11. 如何創建比較頁面
- 12. 比較器類的使用
- 13. 比較器在TreeMap中創建副本
- 14. 如何在Simulink中創建比較塊'double'的輸出類型?
- 15. 如何比較數據分類器?
- 16. 決定使用類比或比較器
- 17. 是否可以創建基於動態類型的比較器?
- 18. 如何在qt中創建圖像比較器?
- 19. 如何輕鬆地從lambda函數創建比較器?
- 20. 創建從成對比較
- 21. CVS - 比較時創建Zip
- 22. 如何比較VARIANTARG類型
- 23. 如何比較類定義
- 24. 如何比較訂單類?
- 25. 如何比較類文件
- 26. 如何比較類型
- 27. 如何比較POD類型
- 28. 如何計算比較器/可比較器中的比較次數?
- 29. 內部類比較器(int)
- 30. 類型組比較器
不,我想創建一個需要** this **作爲模板參數的類 – user2798694
@ user2798694查看更新的答案 – P0W