2013-07-22 40 views
21

Trong trả lời a question about double[,], tôi đã thêm một ảnh chụp màn hình của sản lượng LINQPad cho rằng cấu trúc dữ liệu:Điều gì làm tăng gấp đôi [,,] đại diện?

double[,]

Tuy nhiên, tôi đã tự hỏi những gì một double[,,] trông như thế nào, và LINQPad sẽ không hình dung nó cho tôi. Ngoài ra, tôi không hiểu định dạng của dữ liệu đi vào trong đó:

int[,,] foo = new int[,,] 
    { 
    { 
     { 2, 3}, 
     { 3, 4} 
    }, 
    { 
     { 3, 4}, 
     { 1, 5} 
    } 
    }; 

Mọi người có thể hình dung điều này cho tôi không?

+0

Tôi nghĩ cách trực tiếp nhất để hình dung nó là với khối lập phương 3D. Tôi không biết liệu có ai muốn đề xuất một mô hình 2D phức tạp không ...? – Katana314

+0

@ Katana314, xem http://stackoverflow.com/a/18304657/129164 cho những gì tôi nghĩ về mặt kỹ thuật sẽ được coi là mô hình * 1D *. – devuxer

Trả lời

19

Bạn có thể nghĩ điều này có một nhóm bảng xếp chồng lên nhau. Vì vậy, bạn sẽ cần phải xác định một bộ ba để lấy mục, mà sẽ chỉ định bảng, cột và hàng nào để lấy giá trị từ đó.

Đây là những gì một mảng 3x3x3 có thể được hình dung như:

enter image description here

+0

Và mỗi ô chứa một số đầu vào? ** Chỉnh sửa: ** Dựa trên nhận xét của @ Servy về câu trả lời của anh ấy, tôi biết câu trả lời cho câu hỏi của tôi là "Có". – Bobson

+0

Chính xác. Mỗi hộp là một vị trí mảng, mà sau đó sẽ giữ một giá trị (một đôi nếu bạn sử dụng ví dụ của bạn). – PocketDews

+3

Hãy hình dung 'double [,,,,,,] 'là tốt ;-) –

8

Đó là mảng 3D. Vì vậy, bạn phải làm một đại diện 3D để hình dung nó.

Bạn có thể nghĩ đến việc tạo hình lập phương (hoặc chính xác hơn là hình khối hình chữ nhật) với nhiều khối hình Lego, trong đó mỗi viên gạch chứa 1 số nguyên.

+3

Nó không phải là một khối lập phương, vì các kích thước không cần phải bằng nhau. Đó là một hình khối. – Servy

+2

Có, nhưng tôi không phải bây giờ nếu mọi người đều biết cuboid là gì. –

+1

Nếu bạn có thể sử dụng một thuật ngữ khác để đại diện cho những gì bạn có nghĩa là, sau đó bằng mọi cách, nhưng nói rằng nó là một khối lập phương là không chính xác. – Servy

3

Đó sẽ là một hình khối (mảng 3 chiều) - điều này đi sâu như bạn thích (kích thước khôn ngoan), nhưng hình dung trở nên thực sự khó khăn sau chiều thứ ba.

Bạn có thể tưởng tượng nó như một chồng bảng của loại đã cho; tương tự đó hoạt động đệ quy.

9

Đó là Rectangular Cuboid.

Đó là hình khối ba chiều với 6 khuôn mặt, tất cả đều là hình chữ nhật.

Bạn có thể tưởng tượng thêm rằng hình khối được chia thành nhiều khối và mỗi hình khối có một giá trị.

+0

Vì vậy, đâu là cặp '{2, 3}' (ví dụ)? Một cặp hình khối liền kề? Đường giữa hai góc? – Bobson

+0

@Bobson Trong ví dụ của bạn, bạn có 8 giá trị khác nhau, đó là một khối lập phương 2x2x2. '{2, 3}, {3, 4}' đại diện cho nửa dưới của khối lập phương và '{2, 3}' đại diện cho các khối liền kề (chiếm 1/4 khối toàn bộ khối). – Servy

+1

Ah, điều đó có ý nghĩa bây giờ. – Bobson

3

Đó là mảng 3D (mảng của mảng 2D) như những người khác nói. Bạn có thể sử dụng this extension để hiển thị.

+1

Ooooh, có vẻ thú vị để chơi với. – Bobson

0

Mảng đa chiều trông giống như hình lập phương có 6 cạnh và có 3 chiều rộng, chiều cao và chiều sâu thuộc tính, khi u sâu sắc đặt trang của mảng 2 chiều trong thực khi mảng 2d có độ sâu lớn hơn 1 chúng tôi tạo mảng 3D. xem này Article Để biết sâu về khái niệm này. và bài viết này để sử dụng trong Programming

1

Nó cũng hoàn toàn có thể đại diện cho một mảng n chiều trong một định dạng "lình xình", như thế này:

enter image description here

Đây là một trong những định dạng dễ dàng hơn để tạo và đọc cho một mảng có nhiều hơn hai chiều.

+0

Đẹp nhất. Tôi muốn LINQPad in nó ra theo cách này. – Bobson

Các vấn đề liên quan