알 수없는 크기의 다차원 배열을 플랫 한 것을 사용하여 위조 할 수 있습니까? 배열의 사용량 중 90 %가 재귀를 사용하지 않고도 더 쉽고 빠를 수있는 응용 프로그램과 배열에 약간의 깊이를 추가해야하는 단일 요구 사항이있는 응용 프로그램이 있습니다. 내가 생각할 수있는 유일한 방법은 1 차원 배열과 같을 것이다 시작 인덱스와 끝 인덱스의 실행 목록, 유지 될 것이다 :다차원 배열을 평면 배열로 가짜로 만듭니다.
[0] = 1
[1] = 2
[2] = 3
[3] = 4
[4] = 5
을 ... 그리고 시작/끝 목록은 다음과 같이 보일 것이다 :
Start End
----- ---
[0] = 1 [0] = 2
[1] = 3 [1] = 4
다음과 같습니다 다중 차원 배열 표현 것이다
:
[0] = 1
[1] = [0] = 2
[1] = 3
[2] = [0] = 4
[1] = 5
이 2 개 이상의 차원으로 작동합니다,하지만 그 시점에서 나는 시간을 알아내는 데 문제가 ow를 사용하여 원래의 1D 배열과 시작/끝 목록의 인덱스를 확인했습니다. 또한이 유형의 것을 찾는 데 사용할 검색어가 무엇인지 파악하는 데 어려움을 겪고 있습니다. 모든 일반적인 지침/아이디어가 인정 될 것입니다. 감사.
편집 - 일부 컨텍스트를 제공하기 위해 명령 패턴 구현에서 중첩 트랜잭션을 지원하기위한 것입니다. 1D 배열에는 명령이 포함되어 있으며 인위적인 깊이는 각 트랜잭션에 이름을 부여하기위한 것입니다. 트랜잭션이 적게 사용되기 때문에, 작은 int리스트를 재빨리 통과하는 것은 다차원 명령 배열을 반복적으로 통과하는 것보다 빠르고, 각 명령에서 하나의 명령이 있는지 여부를 확인하는 것이 더 낫습니다. 명령어들의 배열.
재귀를 피할 때 얻을 수있는 이득 (그리고 왜 재귀해야할까요?)은 이러한 인공적인 '깊이'수준을 유지하는 고통에 의해 씹어 먹을 것입니다. –
세 개의 개별 배열을 둘러싼 저글링이 재귀 및 실제 다차원 배열보다 더 잘 수행 될 것이라고 생각하십니까? 이 경로를 따라 가기 전에 중요한 벤치마킹을 해 주시기 바랍니다. – meagar
@Marc B & @meagar : 좀 더 자세한 내용을 제공하는 편집을 참조하십시오. – Ocelot20