Basic List - MetaTrader 5 Library | MT5 EA Download - MetaTrader 5 Resources
/**********************************************************************
Basic List The List class template provides a basic container primitive data type object for storing ordered lists.
For convenience, List also provides synonyms for stack operations,
This makes stacking code using List more explicit without having to define another class.
/**/Template < type name > class base list { public : //Construction, destruction, initialization, assignment basic list() {} BasicList(BasicList&src) {copy(items,src.items);} ~BasicList() {} Basic List Operator = (Basic List&); //Access time operator []( integer i) { return get(i);} T get( integer in) { integer c = count(); if (c> 0 && in >= 0 && inreturn item[in]; } return invalid ; } T first() { integer c = count(); if (c > 0 ) { return items[ 0 ]; } return void ; } T last() { integer c = count(); if (c> 0 ){ return items[c- 1 ];} return void ;} // integer count() { return array size (items);} integer find(t items) { integer c = count(); for ( integer i = 0 ; i if (item == item[i]) { return i;}} return - 1 ;} blank print () { integer c = array_size (items); for ( integer i = 0 ; i printFormat( "%d:%s" ,i,( string )item[i]);}} //Add blank operator +=(T item) {Append(item);} Blank operator ^=(T item) {prefix(item);} blank append(T items) { int c = array_size (items); addAt(c); items[c] = items;} Blank Prefix(T item) {IncreaseAt( 0 ); item[ 0 ] = item; } //Delete blank operator -=(T item) {delete(item);} blank operator ~() {delete all();} blank delete(T items) { integer f=find(items); if (f>- 1 ) {ReduceAt(f);}} Blank Remove last() {ReduceAt( array size (items) - 1 );} Blank delete first() {ReduceAt( 0 );} blank deleteall() { array free (items);} //Stack interface T top() { return last();} blank push(T item) {append(item);} T Pop() {T top=Top(); remove last(); return to top;} protected : T items[]; //Service blank reduce( integer ); blank incrementAt( integer ); blank copy(T&dst[],T&src[]) { integer c = array_size (source); array_resize (dst,c); for ( integer i = 0 ; i
/********************************************************************** Mql does not allow manipulation of pointers and basic types in a template. Therefore, a universal list with pointer control is not possible for all built-in and user types. That's why I made a separate template List for the basic types. Available operators: [index] gets, for example. T var=list[3]; += append, for example. list+=var; ^= prepended, for example. list^=var; -= delete, for example. list-=var; ~ deletes all, eg. ~list; = copy list, eg. T list A=list B; //A-new, B-existing/**/
/********************************************************************** BasicList usage example/************************************************************************/ blank start () { basic list <string> list; /**/ list += "worry" ; // append list += "be happy" ; // append list. print (); //View output /**/ { string s; for ( integer i = 0 ; i < 10 ; i++) {s+= "-" ;} print (s);} /**/ list^= "not" ; //eliminate base list <string> list2=list; //copy list list2. print (); //View output /**/ { string s; for ( integer i = 0 ; i < 10 ; i++) {s+= "-" ;} print (s);} /**/ ~list; //clean list print (list2.Pop()); //pop /**/ { string s; for ( integer i = 0 ; i < 10 ; i++) {s+= "-" ;} print (s);} /**/ List 2. Print (); //View output } /************************************************************************ Output: /** 0: Worry 1: Be happy ---------- 0: No 1: Worry 2: Be happy ---------- Be happy ---------- 0: No 1: Worry /**/
Attachment download
📎 basiclist.mq5 (2.27 KB)
📎 basiclist.mqh (3.45 KB)
Source: MQL5 #29780
💡 Featured Recommendations
✍️ Latest by the author
- •
- •
- •
- •
- •
- •
📌 Popular topics
- •
- •
- •
- •
- •
- •
- •
- •
🔗 You May Be Interested In
- •
- •
- •
- •
- •
- •