일반 클래스 라이브러리 - 버그, 설명, 질문, 사용 기능 및 제안 사항 - 페이지 2

 
결합기 :
평균 O(1) 시간은 O(n)보다 나쁘고 성능은 해시에 크게 의존합니다.

O(n)는 절대적으로 이마에 있는 경우입니다.

 
바실리 소콜로프 :


2017년 12월 6일부터 MetaTrader 5의 표준 배포 에는 데이터 저장 및 검색을 위한 효율적인 알고리즘을 구현하는 소위 Generic 클래스 가 포함되기 시작했습니다. 이 스레드는 이러한 클래스, 작업 예제 및 작업 개선을 위한 제안을 설명하기 위해 만들어졌습니다.

제네릭이란 무엇입니까? 제네릭은 사용자 정의 데이터 유형 을 저장할 수 있는 특수 템플릿 클래스입니다. 이 경우 컴파일 시에 타입 식별이 일어나기 때문에 고성능을 얻을 수 있다.

왜 제네릭인가? 일반적으로 초보 프로그래머는 배열이라는 한 가지 유형의 컬렉션에만 익숙합니다. 그러나 어레이 작업이 비효율적인 작업이 많이 있습니다. 예를 들어 1000개의 주문과 같이 100만 개의 고유 식별자로 구성된 배열이 있다고 상상해 보십시오. 이 천 주문 중 번호가 N인 주문이 하나 있는지 확인하는 방법은 무엇입니까? 일반 클래스 중 하나를 사용하는 경우 이 작업은 검색이 수행될 요소 수에 의존하지 않는 일정한 시간 내에 거의 즉시 완료될 수 있습니다. 일반 컬렉션의 올바른 알고리즘이 프로그래머가 발명한 알고리즘보다 빠를 수 있는 다른 작업이 있습니다.

주제가 흥미롭습니다.

개인적으로 이 문제에 대한 제 생각은 프로그래밍에서 배열 내부의 데이터를 올바르게 구성하고 이러한 배열을 주기적으로 올바르게 작동하는 기능보다 더 효과적인 것은 없다는 것입니다. 이것이 기본의 기초입니다. 다른 모든 솔루션 은 추가 컴퓨터 시간이 필요하고 오버헤드를 생성하는 파생 상품 입니다.

전역 배열, 로컬 배열, 루프 및 함수. 모두.

이러한 도구를 마스터할 수 있는 사람은 효율성 면에서 누구보다 앞서게 될 것입니다.

임호.

 
이반 구로프 :

나는 이름을 단순화하여 더 논리적으로 만들 것을 제안합니다. 예를 들어, CArrayList는 여전히 mql5의 Array 또는 List입니다. 둘 다 구현되어 있습니까?

이 모든 것은 질문과 오해를 불러일으킨다. IMHO, C # 또는 Java가 아닌 stl에서 깎는 것이 필요합니다. 또는 C보다 먼저 제거하고 ArrayList로 두십시오.

...

그리고 반대로 저는 C# 아래의 zakos를 정말 좋아합니다.

 
fxsaber :

매우 명확하게 작성

강조 표시된 내용을 참조하십시오.

보았다. 모든 것이 올바르게 작성되었습니다. 또한 사전에서 요소 검색이 평균 시간 O(1), 즉 즉시 수행된다는 말을 들었습니다.
 
블라디미르 카르푸토프 :
가능한 경우 예를 들어 수천 개의 트랜잭션 중에서 검색하는 것과 같습니다.

확인.

 
피터 코노우 :

주제가 흥미롭습니다.

개인적으로 이 문제에 대한 제 생각은 프로그래밍에서 배열 내부의 데이터를 올바르게 구성하고 이러한 배열을 주기적으로 올바르게 작동하는 기능보다 더 효과적인 것은 없다는 것입니다. 이것이 기본의 기초입니다. 다른 모든 솔루션 은 추가 컴퓨터 시간이 필요하고 오버헤드를 생성하는 파생 상품 입니다.

전역 배열, 로컬 배열, 루프 및 함수. 모두.

이러한 도구를 마스터할 수 있는 사람은 효율성 면에서 누구보다 앞서게 될 것입니다.

임호.

피터, 천천히 해주세요. 여기에서 추상적인 진술이 아니라 새로운 SB 클래스에 대해 논의할 것입니다. 주제를 돌리지 마십시오. 고맙습니다.

 
Artyom Trishkin :

피터, 천천히 해주세요. 여기에서 추상적인 진술이 아니라 새로운 SB 클래스에 대해 논의할 것입니다. 주제를 돌리지 마십시오. 고맙습니다.

내 의견을 표현할 권리가 있습니까? 아니면 당신에게 견딜 수 없습니까?
 
피터 코노우 :
내 의견을 표현할 권리가 있습니까? 아니면 당신에게 견딜 수 없습니까?
아니요. 이 의견은 이미 100 번 표현되었으며 여기에서도 oop evil과 같은 자신의 사모바르로 표현되었습니다. 이미 충분히 들었고, 이 의견에 지쳤습니다.
 
피터 코노우 :
내 의견을 표현할 권리가 있습니까? 아니면 당신에게 견딜 수 없습니까?

귀하의 의견은 일반적으로 세 권으로 된 "전쟁과 평화" 논문입니다. 따라서 삼가하는 것이 좋습니다.

주의하십시오 - 이것은 중재자의 두 번째 요청입니다.

 
fxsaber :

O(n)는 절대적으로 이마에 있는 경우입니다.

아니요. O(n)은 매우 드문 경우에 해시 충돌로 인해 발생합니다. 이것은 최적의 알고리즘에 대한 복잡도 추정치입니다. 충돌 횟수는 메모리 오버헤드와 관련이 있습니다.

일반적인 경우에는 실제로 검색할 필요가 없습니다. 해시를 계산하면 기본적으로 원하는 요소의 위치를 이미 알고 있습니다.