CArrayInt 用法求助

 

CArrayInt  这个标准库怎么新建对象,怎么遍历,怎么打印。。。。新手求助

CArrayInt *array=new CArrayInt;

为什么新建对象的时候带 *。不带* 就报错。。。。

 

看样子你不知道指针的概念,那就不用指针,你直接用 CArrayInt arrary也可以。

看下文档,它有实现增删改查等数据操作方法,分别是Add(),Delete(),Update(),Search().

总的元素个数用Total(),每一个元素获取用At(i)

CArrayInt  arrary 对象在栈上,编译器负责对象的内存管理,你不用管。

CArrayInt  *pt = new CArrayInt,对象在堆上,对象的内存释放需要代码调用 delete pt。

关键是你不了解指针的概念,说这些你未必懂,你就用第一种方式。

--------

参考在线文档

https://www.mql5.com/en/docs/standardlibrary/datastructures/carrayint

Documentation on MQL5: Standard Library / Data Collections / CArrayInt
Documentation on MQL5: Standard Library / Data Collections / CArrayInt
  • www.mql5.com
CArrayInt - Data Collections - Standard Library - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5
 
Ziheng Zhuang #:

看样子你不知道指针的概念,那就不用指针,你直接用 CArrayInt arrary也可以。

看下文档,它有实现增删改查等数据操作方法,分别是Add(),Delete(),Update(),Search().

总的元素个数用Total(),每一个元素获取用At(i)

CArrayInt  arrary 对象在栈上,编译器负责对象的内存管理,你不用管。

CArrayInt  *pt = new CArrayInt,对象在堆上,对象的内存释放需要代码调用 delete pt。

关键是你不了解指针的概念,说这些你未必懂,你就用第一种方式。

--------

参考在线文档

https://www.mql5.com/en/docs/standardlibrary/datastructures/carrayint


mql4 在十多年前出来的时候,那时只有 struct,您可能还记得这件事,那时 mql4 的数据类型都封掉了指针,当时 c# java 开始流行,封掉指针是那时新的编程语言的共识,所以也算是正确的方向,只是到了 2014 那年 mt4 大改版,又把 class 补回来了,补回来还多了可以有指针,可能那时 mql5 已经有 class 吧。有了指针,如果不熟悉 c/c++ 的朋友,忘记去 delete,ea 或指标目的都是要挂在图表不下线的,有内存泄漏的可能,是相当麻烦的事。


14 年那次 mt4 大改版,个人是印象最深刻的,除了从 mql5 那里补许多功能过来,还把编译器也大改了,造成当时所有的 ex4 破解器全部失效,呵呵。。。

 
ambercrystal #:


mql4 在十多年前出来的时候,那时只有 struct,您可能还记得这件事,那时 mql4 的数据类型都封掉了指针,当时 c# java 开始流行,封掉指针是那时新的编程语言的共识,所以也算是正确的方向,只是到了 2014 那年 mt4 大改版,又把 class 补回来了,补回来还多了可以有指针,可能那时 mql5 已经有 class 吧。有了指针,如果不熟悉 c/c++ 的朋友,忘记去 delete,ea 或指标目的都是要挂在图表不下线的,有内存泄漏的可能,是相当麻烦的事。


14 年那次 mt4 大改版,个人是印象最深刻的,除了从 mql5 那里补许多功能过来,还把编译器也大改了,造成当时所有的 ex4 破解器全部失效,呵呵。。。


你也是老前辈了。

我07年接触是MQL4时是没有struct的,到09年都没有,好像到了2013年为了跟MQL5兼容才有了struct。

2014年2月份为了与MQL5完全兼容了, 做了一次大升级,版本 Build 600,编译器都是同一套,可惜2年前(如果没有记错的话)又分开了。

Build 600之后,那些反编译器确实都被歼灭了,那个反编译器的存在确实打击不少开发者热情。

 
Ziheng Zhuang #:

看样子你不知道指针的概念,那就不用指针,你直接用 CArrayInt arrary也可以。

看下文档,它有实现增删改查等数据操作方法,分别是Add(),Delete(),Update(),Search().

总的元素个数用Total(),每一个元素获取用At(i)

CArrayInt  arrary 对象在栈上,编译器负责对象的内存管理,你不用管。

CArrayInt  *pt = new CArrayInt,对象在堆上,对象的内存释放需要代码调用 delete pt。

关键是你不了解指针的概念,说这些你未必懂,你就用第一种方式。

--------

参考在线文档

https://www.mql5.com/en/docs/standardlibrary/datastructures/carrayint

谢谢大佬。这个  CArrayInt怎么遍历啊?  有示例吗?