如何从一个数组(一维二维)中删除一个元素?

 
如何从一个数组中删除一个元素?我需要知道其中存储的元素数量吗?
 

有一个功能,虽然没有人看到它(无论是在帮助中还是在网站上),但它是存在的 )


 
Ilya Malev:

有一个功能,虽然没有人看到它(无论是在帮助中还是在网站上),但它是存在的 )

哦,一个秘密功能,它是如何工作的?
 
Ilya Malev:

有一个功能,虽然没有人看到它(无论是在帮助中还是在网站上),但它是存在的 )


即将推出

 

要删除一个单独的项目,函数

void OnStart()
{
 double array[];
 CopyOpen(_Symbol, PERIOD_CURRENT, 0, 6, array);
 ArrayPrint(array);
 dellArrayElement(3, array);
 ArrayPrint(array);
}/*******************************************************************/

void dellArrayElement(int shift, double &arr[])
{
 int arrSize = ArraySize(arr);
 if(shift > arrSize)
  return;
 if(shift < arrSize)
 ArrayCopy(arr, arr, shift, shift+1);
 ArrayResize(arr, arrSize-1);
}

结果

2018.12.22 09:55:06.206 !00 (EURUSD,M15)        1.13588 1.13607 1.13588 1.13612 1.13586 1.13614
2018.12.22 09:55:06.206 !00 (EURUSD,M15)        1.13588 1.13607 1.13588 1.13586 1.13614

然后你可以把这个函数转换成bool类型,这样你就可以控制它的执行。基本上,如果你很聪明,可以控制你发送给它的数值,无论如何你都可以使用它...

记住,你不能减少静态数组的 大小。

 
Alexey Viktorov:

要删除一个单独的项目,函数

结果

然后你可以把这个函数转换成bool类型,这样你就可以控制它的执行。基本上,如果你很聪明,可以控制你发送给它的数值,无论如何你都可以使用它...

不要忘记,你不能减少静态数组的 大小。

同志写过:一元化 和二元化。你的函数对二维码不起作用。告诉我如何使一个同名的函数对两者都有效 :)

 
Alexey Viktorov:

不要忘了,静态数组 的大小不能被缩小。

我不是在减少数组的大小,我是在从中删除一个元素,这些是不同的事情。我理解你的函数删除了数值1.13612, 它是在dellArrayElement(3, array) 这一行指定的 也就是说,第3个元素被从数组中删除,也就是说,理解正确吗?这样的实验加载程序的速度有多大?

 
Aleksey Semenov:
哦,一个秘密功能,它是如何工作的?

在C++中,有这样的函数,你插入库中,动作就会被执行。但我们考虑到mql没有这样的功能,希望使用手写的功能。

 

我发现这个http://kvodo.ru/urok-7-2-massivyi-osnovnyie-operatsii.html(还有这个https://purecodecpp.com/archives/1935)

假设我们需要从n个元素组成的数组X 删除第m个元素为此,只需用(m+1)个元素 代替m元素,(m+2)个元素代替(m+1)个元素, 以此类推,用n-1代替(n-2),在进一步处理这个数组时使用n-1元素

cout<<"\n m="; cin>>m; //ввод номера элемента, подлежащего удалению
for (i=m; i<n-1; X[i+1],i++); //удаление m-го элемента
for (i=0; i<n-1; i++) cout<<X[i]<<"\t"; //вывод измененного массива
n--; //уменьшение количества элементов в массиве

但那是用C++语言。但这里我们需要知道存储在数组中的项目数量。你需要写一个函数,在写入元素时读取它们。

 
Alexey Viktorov:

要删除一个元素,这个函数就可以了

如果你想从一个数组中删除的不是一个价格值而是一个日期,CopyOpen 是否对日期有效,因为我从帮助中了解到这个函数对价格有效?

 
Ilya Malev:

有一个功能,虽然没有人看到它(无论是在帮助中还是在网站上),但它是存在的 )


它是如何工作的?

int ArrayRemove()

在帮助中没有对它的描述,我在哪里可以读到它?

原因: