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

 
Seric29:

该功能如何运作

手册中没有说明在哪里可以读到它?

你读过这个主题吗?管理员回复--描述即将推出

 
Seric29:

我没有减少数组的大小,而是从其中删除一个元素......

void  ArrayFill( 
   void&  array[],       // массив 
   int    start,         // индекс начального элемента 
   int    count,         // количество элементов 
   void   value          // значение, которым заполняется массив 
   );

这样做会不会行不通?

 
Ilya Malev:

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

我没有看到任何关于二维的内容。但二维本身也是复制的,只是从哪个索引写到数组拾取的数值和从哪个索引读出的数值略有不同。原则上,对于mql中允许的3-4维数组,问题可以得到解决

 
Seric29:

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

但如果条件是

关于交易、自动交易系统和策略测试的论坛

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

Seric29, 2018.12.21 23:50

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

那么阵列的大小自然应该减少。难道不是这样吗?

是的,在这个例子中,被删除的是数组中的第三个元素。速度和一些身体部位的测量是在其他部门进行的。在这种情况下,速度是很正常的。你必须做几次几百次的删除工作,才能得到近似的速度值。我为什么要这样做呢?

 
https://www.mql5.com/ru/forum/289594
Очистка массива от заданного (ых) элементов
Очистка массива от заданного (ых) элементов
  • 2018.11.12
  • www.mql5.com
Есть массив содержащий набор данных по типу 1,2,3,6,9,5,6,3,25,6,8,7,4 нужно удалить например значения 3 и на выходе получить тот же массив без 3 и...
 
Alexey Viktorov:

我没有看到任何关于二维码的内容。但二维码本身也是复制的,只是从哪个索引写到数组,从哪个索引读到源码的数值略有不同。原则上,对于mql中允许的3-4维数组,问题可以得到解决

我猜测这在原则上 是可以解决的。除了它似乎无法解决同名 函数的问题。

 
Ilya Malev:

我猜测这在原则上 是可以解决的。除了它似乎无法解决同名 函数的问题。

为什么?作为一个小学班级来做。

类似的情况

class A
{
 void DellArrElement(int i, double &arr[]);
 void DellArrElement(int i, double &arr[][]);
};

void A::DellArrElement(int i, double &arr[])
 {
  // тело функции для одномерного массива
 };

void A::DellArrElement(int i, double &arr[][])
 {
  // тело функции для двухмерного массива
 };

这是在 "现场 "写的,所以对可能的不准确之处表示歉意。

 

如果数组中元素的顺序并不重要,那么就能很快完成。

#define  ARRAY_RESERVE_SIZE    1000

template<typename T>
void DeleteElementFromArray(T &array[], int elementToDelete)
{  
   int arraySize = ArraySize(array);
   if (elementToDelete < 0 || elementToDelete >= arraySize)
      return;
      
   array[elementToDelete] = array[arraySize - 1];
   ArrayResize(array, arraySize - 1, ARRAY_RESERVE_SIZE);
}

这是对一维数组而言。二维和更大的数组实际上是一维数组。一个一维数组在逻辑上可以表示为一个N维数组。也就是说,事实上,一个一维数组总是足够的。

 
Alexey Viktorov:

为什么?把它作为一个初级班来做。

类似于......的东西。

这是临时写的,所以请原谅我有任何不准确之处。

你是否尝试过编译它?

 
Ilya Malev:

你有没有尝试过编译这个?

他们还没有想出如何在论坛网站上直接制作编译器。

关于交易、自动交易系统和策略测试的论坛

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

Alexey Viktorov, 2018.12.22 21:25

为什么?把它作为一个初级班来做。

类似的情况。

class A
{
 void DellArrElement(int i, double &arr[]);
 void DellArrElement(int i, double &arr[][]);
};

void A::DellArrElement(int i, double &arr[])
 {
  // тело функции для одномерного массива
 };

void A::DellArrElement(int i, double &arr[][])
 {
  // тело функции для двухмерного массива
 };

由 "手写",所以对可能的不准确之处表示歉意。