अनुशंसित, 2024

संपादक की पसंद

वन-डायमेंशनल (1D) और टू-डायमेंशनल (2D) ऐरे के बीच अंतर

एक सरणी एक चर का संग्रह है जो समान डेटा प्रकारों के होते हैं और एक सामान्य नाम से संदर्भित होते हैं। किसी सरणी में एक विशिष्ट तत्व उस सरणी के एक विशेष सूचकांक द्वारा पहुँचा जाता है। जावा में एरर्स C ++ की तुलना में अलग तरीके से काम करते हैं। हमारी चर्चा का मुख्य विषय एक आयाम और दो-आयाम सरणी के बीच का अंतर है। एक-आयामी सरणी समान डेटाटाइप के साथ चर की एक सूची है, जबकि दो-आयामी सरणी समान डेटा प्रकार वाले 'सरणी के सरणी' है। C ++ में सरणियों पर बाउंड चेकिंग नहीं है, जबकि जावा में एरियर्स पर सख्त बाउंड चेकिंग है।

तो आइए एक तुलना चार्ट के साथ एक-आयाम और दो-आयाम सरणी के बीच अंतर के साथ शुरू करते हैं।

तुलना चार्ट:

तुलना के लिए आधारएक आयामीदो आयामी
बुनियादी
समान डेटा प्रकार के तत्वों की एकल सूची संग्रहीत करें।'सूचियों की सूची' या 'सरणी के सरणी' या 'एक आयामी सरणियों की सरणी' को संग्रहीत करें।
घोषणासी ++ में / * घोषणा
प्रकार__नाम [आकार]? * /
/ * जावा में घोषणा
प्रकार variable_name [];
चर_नाम = नया प्रकार [आकार]; * /
सी ++ में / * घोषणा
type_name [size1] [size2]; * /
/ * जावा में घोषणा
type__name = नया int [size1] [size2]; * /
वैकल्पिक घोषणा/ * जावा में
int [] a = नया int [१०]; * /
/ * जावा में
int [] [] a = नया int [१०] [२०]; * /
बाइट्स में कुल आकारकुल बाइट्स = sizeof (सरणी चर का डेटाटाइप) * सरणी का आकार।कुल बाइट्स = sizeof (सरणी चर का डेटाटाइप) * पहले सूचकांक का आकार * दूसरे सूचकांक का आकार।
पैरामीटर प्राप्त करनायह एक पॉइंटर, साइज़ ऐरे या एक अनसीज्ड एरे में प्राप्त किया जा सकता है।इसे प्राप्त करने वाले पैरामीटर को किसी सरणी के सबसे सही आयाम को परिभाषित करना होगा।
आयामएक आयामी।दो आयामी।

वन-डायमेंशनल एरे की परिभाषा (1-डी सरणी)

एक-आयामी या एकल-आयामी सरणी को "समान डेटा प्रकारों के चर की सूची" के रूप में माना जाता है, और प्रत्येक चर को उस सरणी के नाम से पहले के वर्ग कोष्ठक में इसके सूचकांक को निर्दिष्ट करके अलग से पहुँचा जा सकता है।

सी ++ में, आकार के साथ एक सरणी चर की घोषणा स्मृति में उनके लिए स्थान आवंटित करने के लिए पर्याप्त है। जावा में, यह दो चरणों में हासिल किया जाता है। सबसे पहले, आपको वांछित प्रकार का एक चर घोषित करना होगा। दूसरा, आपको 'नई' का उपयोग करके सरणी को होल्ड करने के लिए मेमोरी को आवंटित करना होगा और इसे घोषित चर चर में असाइन करना होगा। इसलिए, सरणियों को जावा में गतिशील रूप से आवंटित किया जाता है।

आइए C ++ संदर्भ में चर्चा करते हैं

 // सी + + प्रकार में घोषणा चर_नाम [आकार]; 

यहां प्रकार डेटा प्रकार की सरणी चर की घोषणा करता है, और आकार उस तत्व की संख्या को परिभाषित करता है जो सरणी धारण करेगा।

उदाहरण के लिए, यदि हम एक ऐसा ऐलान करना चाहते हैं, जिसमें साल के हर महीने का संतुलन होगा।

 // उदाहरण int month_balance [12]; 

महीना _balance सरणी चर है जो 12 पूर्णांकों को धारण करेगा, जो प्रत्येक महीने के संतुलन का प्रतिनिधित्व करेगा। अब, यदि हम महीने 'अप्रैल' के शेष का उपयोग करना चाहते हैं, तो हमें बस अप्रैल के महीने के लिए सूचकांक मान वाले वर्ग ब्रैकेट के बाद वाले चर नाम का उल्लेख करना होगा अर्थात 'महीना_बलेंस [3]'। लेकिन जैसा कि 'अप्रैल' वर्ष का चौथा महीना है, लेकिन हमने '[3]' का उल्लेख किया था क्योंकि सभी सरणियों में उनके पहले तत्व के सूचकांक के रूप में 0 है।

जावा में, यह किया जा सकता है

 // जावा प्रकार के वेरिएबल_नाम में घोषणा []; चर_नाम = नया प्रकार [आकार]; 

यहां, शुरू में हमने इसके प्रकार के साथ एक सरणी चर घोषित किया था और फिर हमने इसे 'नया' का उपयोग करते हुए मेमोरी को आवंटित किया था और घोषित सरणी चर को 'नया' असाइन किया था। यदि हम एक ऐसा ऐलान करना चाहते हैं, जिसका उदाहरण वर्ष के प्रत्येक माह में शेष होगा, तो ऊपर का उदाहरण लें।

 // उदाहरण int month_balance []; month_balance = नया int [12]; 

यहाँ, 'नया' एरे वेरिएबल "month_balance" के लिए मेमोरी आवंटित करता है, इसलिए अब, mont_balance अब 12 पूर्णांक मानों के लिए मेमोरी रखेगा।

घोषित होने पर एरे को इनिशियलाइज़ किया जा सकता है। एक सरणी इनिशलाइज़र घुंघराले ब्रेसिज़ से घिरे अल्पविराम से अलग मूल्यों की सूची है।
//उदाहरण

 int month_balance = {100, 500, 200, 750, 850, 250, 630, 248, 790, 360, 450, 8080}; 

द्वि-आयामी सरणी की परिभाषा (2-डी सरणी)

C ++ और Java दोनों ही बहुआयामी सरणी का समर्थन करते हैं। बहुआयामी सरणी के सबसे सरल रूपों में से एक एक, दो-आयामी सरणी या 2-डी सरणी है। एक दो-आयामी सरणी को 'सरणी के सरणी' या 'एक-आयामी सरणियों के सरणी' के रूप में माना जा सकता है। दो-आयामी सरणी चर घोषित करने के लिए, हमें दो वर्ग कोष्ठक के बाद वाले सरणी नाम को निर्दिष्ट करना होगा जहां दूसरा सूचकांक वर्ग कोष्ठक का दूसरा सेट है।

एक दो-आयामी सरणी को पंक्ति-स्तंभ मैट्रिक्स के रूप में संग्रहीत किया जाता है, जहां पहला सूचकांक पंक्ति को इंगित करता है और दूसरा सूचकांक स्तंभ को इंगित करता है। किसी ऐरे के तत्वों को एक्सेस करते समय किसी ऐरे के दूसरे या सबसे दाहिने इंडेक्स में पहले या लेफ्ट-मोस्ट इंडेक्स की तुलना में बहुत तेजी से बदलाव होता है।

सी ++ में, द्वि-आयामी सरणी के रूप में घोषित किया गया है;

 // सी + + प्रकार में घोषणा चर_नाम [size1] [size2]; 

उदाहरण के लिए, हम वर्ष के प्रत्येक महीने में 2-डी सरणी में प्रत्येक 30 दिनों के शेष राशि को संग्रहीत करना चाहते हैं।

 // उदाहरण int month_balance [12] [30]; 

जावा में, द्वि-आयामी सरणी द्वारा प्राप्त की जाती है

 // जावा प्रकार में घोषणा चर_नाम = नया int [size1] [size2]; // उदाहरण int month_balance = नया int [12] [30]; 

जब हम किसी फ़ंक्शन के पैरामीटर के रूप में पूरे सरणी को पास नहीं कर सकते हैं, तो सरणी के पहले तत्व के लिए एक सूचक पारित किया जाता है। दो-आयामी सरणी प्राप्त करने वाले तर्क को यह परिभाषित करना चाहिए कि यह सबसे सही आयाम है। सही आयाम की आवश्यकता है क्योंकि कंपाइलर को इसकी आवश्यकता है, प्रत्येक पंक्ति की लंबाई की पुष्टि करने के लिए यदि वह सरणी को सही ढंग से अनुक्रमित करना चाहता है। यदि सही-सबसे सूचकांक का उल्लेख नहीं किया गया है, तो संकलक यह निर्धारित नहीं कर सकता कि अगली पंक्ति कहाँ से शुरू होती है।

 // जावा शून्य में उदाहरण geting_funct (इंट [ए] [10]) {। । । } 

जब मेमोरी को गतिशील रूप से जावा में दो-आयामी सरणी के लिए आवंटित किया जा रहा है, तो बाईं-सबसे सूचकांक निर्दिष्ट किया गया है, और शेष आयामों को अलग से आवंटित किया जा सकता है अर्थात सरणी की सभी पंक्तियाँ समान आकार की नहीं हो सकती हैं।

 // उदाहरण में Java int month_balance = new int [12] []; month_balance [0] = नया int [31]; month_balance [1] = नया int [28]; month_balance [2] = नया int [31]; month_balance [3] = नया int [30]; month_balance [4] = नया int [31]; month_balance [5] = नया int [30]; month_balance [6] = नया int [31]; month_balance [7] = नया int [30]; month_balance [8] = नया int [31]; month_balance [9] = नया int [30]; month_balance [10] = नया int [31]; month_balance [11] = नया int [30]; month_balance [12] = नया int [31]; 

लेकिन ऐसा करने का कोई फायदा नहीं है।

एक-आयामी और दो-आयामी सरणी के बीच महत्वपूर्ण अंतर

  1. एक-आयामी सरणी एक सूची है जिसके तत्व समान डेटाटाइप के हैं। दूसरी ओर, द्वि-आयामी सरणी एक सूची है जिसके तत्व समान डेटा प्रकार के सरणी हैं।
  2. C ++ में, जब एक आयामी फ़ंक्शन प्राप्त फ़ंक्शन के पैरामीटर द्वारा प्राप्त किया जाता है, तो सरणी के आकार का उल्लेख करना आवश्यक नहीं है, कंपाइलर समझता है कि प्रकार का सरणी (पैरामीटर के साथ उल्लेख डेटाटाइप) कुछ लंबाई के साथ प्राप्त करना है। द्वि-आयामी सरणी में, दूसरे या सही-सबसे सूचकांक को निर्दिष्ट किया जाना है क्योंकि संकलक को यह जानना होगा कि एक एकल पंक्ति अंत और एक नई पंक्ति कहां से शुरू होती है।
  3. सी ++ में, एक आयामी सरणी को अनुक्रमित क्रम में एक सन्निहित स्मृति स्थान में संग्रहीत किया जाता है, जबकि दो आयामी सरणी को सन्निहित स्मृति स्थान में भी संग्रहीत किया जाता है, लेकिन चूंकि दो आयामी सरणी में कई पंक्तियां होती हैं, का भंडारण पहली पंक्ति के बाद दूसरी और तीसरी और इसी तरह दूसरी पंक्ति होती है।

ध्यान दें:

दोनों को पास करना, एक आयामी सरणी और साथ ही, एक फ़ंक्शन के लिए दो-आयामी सरणी समान है, दोनों को केवल सरणी के नाम से पारित किया जाता है

 // उदाहरण pass_funt (name_of_array); 

निष्कर्ष:

एक आयामी और दो आयामी सरणी में, सूचकांक बहुत महत्वपूर्ण भूमिका निभाता है क्योंकि यह एकमात्र ऐसी चीज है जो विशेष रूप से सरणी में एक तत्व की पहचान करता है। दोनों आयामी और दो आयामी सरणी को उनके घोषणा के समय आरंभीकृत किया जा सकता है।

Top