오류, 버그, 질문 - 페이지 465

 
uncleVic :
그리고 SD에 그것에 대해 씁니다. 그들은 "리뷰에 있는 모든 것을 테스터에서 선택할 수 있는 것은 아닙니다"라고 말합니다.
아니, 물러서. Alpari와 MK라는 두 개의 터미널이 열려 있고 앞뒤로 전환했지만 마지막 터미널에서는 시장 개요에 EURGBP를 추가하는 것을 잊었습니다.
 
marketeer :
아니, 물러서. Alpari와 MK라는 두 개의 터미널이 열려 있고 앞뒤로 전환했지만 마지막 터미널에서는 시장 개요에 EURGBP를 추가하는 것을 잊었습니다.
그것은 일어난다.
 

표시기 시리즈처럼 작동하는 스크립트에서 배열을 만들려고 합니다. 즉, 새 항목이 나타나면 전체 배열이 뒤로 이동하고 새 항목이 0 위치에 만들어집니다.

 void OnStart ()
  {
   int a[];
   int size= 5 ;               // размер массива
   bool flag= true ;           // флаг направления индексации
   ArraySetAsSeries (a,flag);  // зададим направление индексации
   ArrayResize (a,size);       // зададим размер массива
//---
   for ( int i= 0 ;i<size;i++)  // задаём значения и распечатываем массив
      a[i]=size-i;         // 54321
   Print ( "[" ,a[ 0 ], "][" ,a[ 1 ], "][" ,a[ 2 ], "][" ,a[ 3 ], "][" ,a[ 4 ], "]" );
//---
   ArrayResize (a,size- 1 );     // уменьшаем размер 5432
   ArraySetAsSeries (a,!flag);  // меняем направление индексации 2345
   ArrayResize (a,size);       // возвращаем в исходный размер  2345х
   ArraySetAsSeries (a,flag);   // возвращаем в исходную индексацию х5432   
   a[ 0 ]= 6 ;                   // задаём "пустому" нулевому данному значение
//---
   Print ( "[" ,a[ 0 ], "][" ,a[ 1 ], "][" ,a[ 2 ], "][" ,a[ 3 ], "][" ,a[ 4 ], "]" );
   // в результате получаем 64321 вместо нужного 65432
  }

그 이유를 어떻게 말합니까?

추신: 무차별적으로 비난하고 싶지는 않습니다. 제가 뭔가를 망쳤을 수도 있지만 가장 먼저 떠오르는 것은 또 다른 언어 최적화 버그입니다.

ZZY 데이터를 주기로 이동하도록 조언하고 싶은 동지들에게 묻습니다. 걱정하지 마십시오. 이 옵션은 5 ... 100 ... 1000 ...의 배열에서 잘 작동하지만 큰 배열 크기 의 경우 허용되지 않습니다.

 
Urain :

표시기 시리즈처럼 작동하는 스크립트에서 배열을 만들려고 합니다. 즉, 새 항목이 나타나면 전체 배열이 뒤로 이동하고 새 항목이 0 위치에 만들어집니다.

그 이유를 어떻게 말합니까?


그리고 CArrayInt 클래스를 사용하고 삽입으로 데이터를 푸시하면?
 
uncleVic :
그리고 CArrayInt 클래스를 사용하고 거기에 데이터를 푸시한다면?

매개 변수를 통해 배열을 전달할 수 있기를 원하며 클래스에서 배열 자체는 비공개입니다.

다시 말하지만, 내가 기억하는 한 이 방법은 루프에서 데이터 이동을 처리하며 다소 느립니다.

 
Urain :

표시기 시리즈처럼 작동하는 스크립트에서 배열을 만들려고 합니다. 즉, 새 항목이 나타나면 전체 배열이 뒤로 이동하고 새 항목이 0 위치에 만들어집니다.

그 이유를 어떻게 말합니까?

추신: 무차별적으로 비난하고 싶지는 않습니다. 제가 뭔가를 망쳤을 수도 있지만 가장 먼저 떠오르는 것은 또 다른 언어 최적화 버그입니다.

ZZY 데이터를 주기로 이동하도록 조언하고 싶은 동지들에게 묻습니다. 걱정하지 마십시오. 이 옵션은 5 ... 100 ... 1000 ...의 배열에서 잘 작동하지만 큰 배열 크기의 경우 허용되지 않습니다.


"ZZY"를 희생시키면서: 크기 조정으로 인해 메모리가 조각나지 않습니까?
 
uncleVic :
"ZZY"를 희생시키면서: 크기 조정으로 인해 메모리가 조각나지 않습니까?

mql5의 다른 기능(메모리 할당)을 모릅니다.

ZY 예, 제가 이해하는 한 어레이의 방향도 순전히 가상입니다.

ZZY 아마도 스토리지가 아닌 주소 공간 가상화와 함께 작동해야 할 것입니다. 그리고 이것은 또한 작업 속도를 늦추고 직접 액세스하는 것이 더 빠릅니다.

 
Urain :

매개 변수를 통해 배열을 전달할 수 있기를 원하며 클래스에서 배열 자체는 비공개입니다.

다시 말하지만, 내가 기억하는 한 이 방법은 루프에서 데이터 이동을 처리하며 다소 느립니다.

(나에게) 배열 클래스를 개선하는 것에 대해 생각할 필요가 있을 것입니다.
 
uncleVic :
(나에게) 배열 클래스를 개선하는 것에 대해 생각할 필요가 있을 것입니다.

예, 제로 위치에 가상 인서트를 삽입해도 문제가 되지 않습니다. 그러나 데이터가 실제로 이동하지 않는 경우에만 그렇지 않으면 시간이 오래 걸리고 효과적이지 않습니다.

그래도 메모리로 직접 작업을 할 수 없다는 것은 안타까운 일이고, 가상화 중에는 좋은 가속도가 있는데, C++에서도 어레이가 아닌 주소에 있는 셀에 접근하면 속도가 1.5배 빨라진다.

 
Urain :

표시기 시리즈처럼 작동하는 스크립트에서 배열을 만들려고 합니다. 즉, 새 항목이 나타나면 전체 배열이 뒤로 이동하고 새 항목이 0 위치에 만들어집니다.

ZZY 데이터를 주기로 이동하도록 조언하고 싶은 동지들에게 묻습니다. 걱정하지 마십시오. 이 옵션은 5 ... 100 ... 1000 ...의 배열에서 잘 작동하지만 큰 배열 크기의 경우 허용되지 않습니다.


그리고 모든 어레이를 이동하지 말라고 조언하는 것이 가능합니까? :)

동적 배열 , 새로운 데이터가 끝에 기록되고 크기가 변경/기억되며 AsSeries 플래그는 인덱싱만 변경합니다.

N 배열 요소에 대한 일반적인 순서 액세스의 경우 "직렬" Size-N-1의 경우.

Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Основы языка / Типы данных / Объект динамического массива - Документация по MQL5