Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // hyrTmpl.mqh
- // by 2025 hyrolean
- //---------------------------------------------------------------------------
- // Local:: <DataFolder>\MQLx\Include\User\hyrTmpl.mqh
- // URL:: https://pastebin.com/LG1vurny
- //===========================================================================
- // インラインテンプレート
- //---------------------------------------------------------------------------
- //オブジェクトのソート
- // ( https://youtu.be/ZRPiwUNLjiA )
- #include <Arrays/ArrayObj.mqh>
- #define ARRAY_SORT_ASCEND 1
- #define ARRAY_SORT_DESCEND 2
- template <typename T>
- class CSortable : public CObject {
- public:
- T v;
- int Compare(const CObject *node, const int mode=0) const {
- if(mode<=0) return 0;
- CSortable *comp= (CSortable*)node ;
- bool f = v<comp.v ;
- if(!f&&!(comp.v<v)) return 0;
- int result = f ? -1:+1 ;
- switch(mode) {
- case ARRAY_SORT_ASCEND: return +result;
- case ARRAY_SORT_DESCEND: return -result;
- }
- return 0;
- }
- CSortable(const T& v_) : CObject(), v(v_) {}
- };
- template <typename T>
- void AddToArray(CArrayObj &array, const T& v) {
- CSortable<T> *node = new CSortable<T>(v);
- array.Add(node);
- }
- template <typename T>
- void AddToSortedArray(CArrayObj &array, const T& v) {
- CSortable<T> *node = new CSortable<T>(v);
- array.InsertSort(node);
- }
- template <typename T>
- int SearchSortedArray(CArrayObj &array, const T& v) {
- CSortable<T> node(v);
- return array.Search(&node);
- }
- //---------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment