2008-09-25 2 views
1

C#을 사용하여 2 차원 데이터 구조를 만드는 데 사용할 접근법을 결정하는 데 도움이되는 자료를 찾고 있습니다.2d C#의 데이터 구조

+0

배열, 목록 또는 사전과 비슷합니까? –

+0

어쩌면 당신이하고 싶은 일을 정교하게하고 2D 데이터 구조를 사용할 수 있습니다. 그래서 다른 사람들이 더 관련성 있고 의미있는 대답을 줄 수 있습니까? – cruizer

답변

3

다차원 배열을 의미합니까? 그것은 간단하다 : 여기

<type>[,] <name> = new <type>[<first dimenison>,<second dimension>]; 

은 MSDN 참조입니다 : 진심

Multidimensional Arrays (C#)

0

Data Structures in C#

, 나는 질문의 중요 노력 아니지만, 나는 유용한 결과의 톤을 가지고 내가 검색했을 때 내 검색의 상단에 바로 :

data structures c# 

특정 데이터 구조에 대해 궁금한 점이 있으면 구체적인 답변을 드릴 것입니다 ...

+0

아, 그냥 2D 배열 인 경우 내 호언 장담은 신경 쓰지 마세요. – CMPalmer

0

성능면에서 다차원 배열 ([,])을 사용하지 않는 것이 가장 좋습니다. 대신, 들쭉날쭉 한 배열을 사용하십시오. 예 :

<type>[][] <name> = new <type>[<first dimension>]; 
for (int i = 0; i < <first dimension>; i++) 
{ 
    <name>[i] = new <type>[<second dimension>]; 
} 

에 액세스하려면 : 실제로 실제 성능 향상은 하나 개의 거대한 평면 배열에서 만든 것을 주장 싶지만, 그건 그냥 내 C++ 영상 처리 될 수있다 Traumapony-- @

<type> item = <name>[<first index>][<second index>]; 
+0

성능면에서는 1 차원 배열을 사용하고 오프셋을 사용하여 액세스하는 것이 가장 좋습니다. ; P –

2

뿌리를 보여줍니다.

2D 구조가 필요한 부분에 따라 다릅니다. 두 번째 차원의 각 항목 집합이 같은 크기 인 항목을 저장하는 경우 검색 시간이 빨라지고 데이터 관리가 더 쉽기 때문에 큰 1D 배열과 같은 것을 사용하려고합니다. 마찬가지로 :

for (y = 0; y < ysize; y++){ 
    for (x = 0; x < xsize; x++){ 
     theArray[y*xsize + x] = //some stuff! 
    } 
} 

그리고 다음 이웃 하나의 통과와 픽셀 무시하고 작업을 수행 할 수 있습니다 당신은 아마 실제로 처리 이런 종류의 작업을 수행하는 C++ 라이브러리를 호출 할 C#에서 그 제외

totalsize = xsize*ysize; 
for (x = 0; x < totalsize; x++){ 
    theArray[x] = //some stuff! 
} 

을 ; C++은 인텔 컴파일러를 사용하는 경우 특히 더 빠릅니다.

여러 크기가 다른 두 번째 크기가있는 경우 적용 할 필요가없는 것이므로 다른 솔루션을 살펴 봐야합니다. 질문에 대답 할 수 있으려면 기능적 요구 사항이 무엇인지 알아야합니다.

+0

음, 네, 그건 사실이지만, 기술적으로 2D가 아닙니다 : P – TraumaPony

1

데이터의 유형에 따라 직선 2 차원 배열을 사용하여 볼 수 있었다 :

Dictionary<KeyValuePair<int,int>,string>; 
: 당신이 까다로운해야하는 경우

int[][] intGrid; 

, 당신은 항상 제네릭 접근 방식을 갈 수를

이렇게하면 사전에 값 유형 부분에 복잡한 유형을 넣을 수 있지만 요소에 대한 색인 작성이 더 어려워집니다.

공간 2D 데이터를 저장하려는 경우 System.Drawing은 2D 공간의 점을 많이 지원합니다.