欢迎访问 外汇EA下载与MT4/MT5自动交易资源 - 聚合外汇EA、黄金EA、量化交易工具与自动化交易实战内容。
登录 注册

基本列表 - MetaTrader 5 库

author emer | 697 人阅读 | 0 人评论 |
/********************************************************************
基本列表
List 类模板提供了用于存储有序列表的基本容器
 基本数据类型对象。
为了方便起见,List 还提供了堆栈操作的同义词,
 这使得使用 List 进行堆栈的代码更加明确,而无需定义另一个类。
/**/


模板<类型名>班级基本列表
  {民众:
  //构造、销毁、初始化、赋值                     基本列表() {}
                     BasicList(BasicList&src) {复制(items,src.items);}
                    ~BasicList() {}
   基本列表        操作员=(基本列表&);
  //访问   时间                操作员[](整数我) {返回获取(i);}
   T                 获取(整数在) {整数c=计数();如果(c>0&&在>=0&&在返回项目[在];}返回 无效的;}
   T                 首先() {整数c=计数();如果(c>0){返回项目[0];}返回 无效的;}
   T                 最后() {整数c=计数();如果(c>0){返回项目[c-1];}返回 无效的;}
  //  整数               数数() {返回 数组大小(项目);}
  整数               查找(T 项){整数c=计数();为了整数我=0;我如果(项目==项目[i]) {返回我;}}返回-1;}
  空白              打印() {整数c=数组大小(项目);为了整数我=0;我打印格式(“%d:%s”,我,(细绳)项目[i]);}}
  //添加  空白              操作员+=(T 项) {追加(项);}
  空白              操作员^=(T 项) {前置(项);}
  空白              追加(T 项){整数c=数组大小(项目);增加At(c);项目[c]=项目;}
  空白              前置(T 项){IncreaseAt(0);项目[0]=项目;}
  //删除  空白              操作员-=(T 项) {删除(项);}
  空白              操作员~() {删除全部();}
  空白              删除(T 项){整数f=查找(项目);如果(f>-1) {ReduceAt(f);}}
  空白              删除最后一个() {ReduceAt(数组大小(项目)-1);}
  空白              删除第一个() {ReduceAt(0);}
  空白              全部删除() {数组自由(项目);}
  //堆栈接口   T                 顶部() {返回最后的();}
  空白              推送(T 项目){追加(项目);}
   T                 Pop() {T top=Top();删除最后一个();返回顶部;}受保护的:
   T                 项目[];
  //服务  空白              减少 (整数);
  空白              增加At(整数);
  空白              复制(T&dst[],T&src[]) {整数c=数组大小(来源);数组调整大小(夏令时,c);为了整数我=0;我 


/********************************************************************
Mql 不允许在一个模板中操作指针和基本类型,
 因此,对于所有内置类型和用户类型来说,一个具有指针控制的通用列表是不可能的。
   这就是为什么我为基本类型制作了一个独立的模板List。
可用的运算符:
   [索引] 获取,         例如。 T var=列表[3];
   += 附加,           例如。列表+=var;
   ^= 前置,          例如。列表^=var;
   -= 删除,           例如。列表-=var;
   ~ 删除全部,         例如。 〜列表;
   = 复制列表,         例如。 T 列表A=列表B; //A-新的,B-现有的
/**/


/********************************************************************
BasicList 使用示例
/********************************************************************/
空白 启动时()
  {
   基本列表<细绳>列表;
  /**/   列表+=“担心”;                //附加   列表+=“要开心”;            //附加   列表。打印();                //查看输出  /**/     {细绳s;为了整数我=0;我<10; i++) {s+=“-”;}打印(s);}
  /**/   列表^=“不”;                //消除   基本列表<细绳>列表2=列表;  //复制列表   列表2。打印();                //查看输出  /**/     {细绳s;为了整数我=0;我<10; i++) {s+=“-”;}打印(s);}
  /**/   〜列表;                        //清理列表  打印(list2.Pop());          //流行音乐  /**/     {细绳s;为了整数我=0;我<10; i++) {s+=“-”;}打印(s);}
  /**/   列表2。打印();                //查看输出  }/********************************************************************
输出:
/**
   0:担心
   1:要快乐
   ----------
   0:不
   1:担心
   2:要快乐
   ----------
   开心一点
   ----------
   0:不
   1:担心
/**/



附件下载

📎 basiclist.mq5 (2.27 KB)

📎 basiclist.mqh (3.45 KB)

Source: MQL5 #29780

🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录