2010-08-12 9 views
25

संभव डुप्लिकेट:
What are the differences between using int[][] and int[,]?int [] [] और int [,] के बीच क्या अंतर है?

मैं सिर्फ इस अंकन में आए:

int[,] 

जब भी मैं एक मैट्रिक्स मैं इस्तेमाल किया की जरूरत:

int[][] 

क्या अंतर है? किस का उपयोग कब करें?

संपादित करें: त्वरित प्रतिक्रियाओं के लिए धन्यवाद। मैं इसके बारे में सोचा था। इस तरह की चीजों के लिए Google करना भी मुश्किल है।

अब मैं उद्देश्य को समझता हूं। लेकिन वे सिस्टम से कैसे संबंधित हैं। ऐरे?

उत्तर

40

int[,] एक आयताकार सरणी है - एक वस्तु है जो दो आयाम हैं। सरणी का प्रत्येक तत्व एक पूर्णांक है; सभी तत्व स्मृति में संगत रूप से संग्रहीत हैं। एक सरणी जहां प्रत्येक तत्व बारी एक int[] में है -

int[][] एक दांतेदार सरणी है। (तो यह सरणी की एक सरणी है।) हालांकि "शीर्ष स्तर" सरणी के प्रत्येक तत्व को संयोजित रूप से संग्रहीत किया जाता है, लेकिन वे तत्व अन्य सरणी के संदर्भ हैं, जो स्मृति में कहीं भी हो सकते हैं।

जबकि आयताकार सरणी में हमेशा प्रति पंक्ति स्तंभों की संख्या समान होती है, एक जंजीर सरणी में प्रत्येक तत्व की एक अलग लंबाई हो सकती है (या वास्तव में शून्य हो सकती है)।

प्रत्येक के अपने फायदे और नुकसान होते हैं; आयताकार सरणी स्मृति के मामले में अधिक कॉम्पैक्ट हैं, लेकिन दुर्लभ आबादी की अनुमति नहीं देते हैं। सीएलआर में जालीदार सरणी तेज हैं, लेकिन अच्छे कैश समेकन के रूप में नहीं है। जंजीर सरणी में "पंक्ति सरणी" द्वारा उठाई गई अतिरिक्त जगह कुछ मामलों में महत्वपूर्ण हो सकती है - यदि आपके पास int[10000, 2] है जो केवल 80000 बाइट्स और एक सरणी ऑब्जेक्ट का ओवरहेड लेगा, जबकि एक जंजीर सरणी में यह होगा डेटा के लिए 80000 बाइट्स और 10001 सरणी ऑब्जेक्ट्स के ओवरहेड।

एमएसडीएन के पास arrays tutorial में अधिक जानकारी है।

+3

यह सबसे अच्छा जवाब है (प्रश्न के बावजूद) जो मैंने कभी पढ़ा है। –

11

पहले भी दूसरा दांतेदार है (प्रत्येक पंक्ति तत्वों की समान संख्या) है (प्रत्येक पंक्ति तत्वों की एक अलग संख्या हो सकती है)

दूसरे शब्दों में कहें करने के लिए, पहले एक एक बहु है - आयामी सरणी - एक आयताकार सरणी। दूसरा एक सरणियों की एक सरणी है (और इसलिए, प्रत्येक व्यक्ति सरणी एक अलग लंबाई के हो सकते हैं।)

4

int[x,y] निश्चित आयामों के साथ एक द्वि-आयामी सरणी है (उदा। int[4,5])।
int[][] एक जंजीर सरणी है, जिसका अर्थ है कि यह सरणी की एक सरणी है, जिनमें से प्रत्येक में तत्वों की एक अलग संख्या हो सकती है।

2

मैट्रिक्स बनाने के लिए, int[,] आसान है। Jagged array int[][] अधिक काम करता है (आपको setup the complete matrix पर अतिरिक्त लूप की आवश्यकता है)।

लेकिन आप अभी भी int[][] पर विचार करना चाहेंगे क्योंकि यह faster है।

0

जैसा कि हर किसी ने उल्लेख किया है, int[,] एक बहुआयामी/आयताकार सरणी है, जबकि int[][] सरणी की एक सरणी है, या एक "जंजीर" सरणी है।

जब आप दूसरे पर एक का उपयोग करेंगे, int[][] सेट करने के लिए दर्द हो सकता है (प्रत्येक पंक्ति को बनाया जाना चाहिए), लेकिन यह हमेशा थोड़ा तेज़ लगता है। int[,] का लाभ यह है कि यह आसान है और नियमितता लागू होती है, जो आपको इसकी आवश्यकता होने पर बहुत अच्छा बनाता है। (गलती से एक पूरी पंक्ति को 2 डी सरणी में बदलना कठिन है, यह सरणी की सरणी के साथ हो सकता है।)

संबंधित मुद्दे