PDA

View Full Version : سوال: فرق آرایه چند بعدی با ناهموار چیه؟!



Developer Programmer
شنبه 03 اسفند 1387, 01:10 صبح
1 ) تفاوت های آرایه های Multidimensional و jagged چیه و چرا نوع تعریفشون فرق میکنه؟

string[,] names = new string[5,4];
byte[][] scores = new byte[5][];

***ویرایش شده توسط مدیر***

vcldeveloper
شنبه 03 اسفند 1387, 02:44 صبح
در آرایه های Multidimensional طول هر بعد از آرایه ثابت هست، یعنی مثلا در یک آرایه 3 در 3 تعداد ستون های هر سطر با هم برابر هست:
{1,2,3}
{4,5,6}
{7,8,9}

در آرایه های Jagged، در واقع یک آرایه یک بعدی تعریف میشه که هر عضو آرایه خودش یک آرایه هست، به همین دلیل، طول هر یک از عناصر آرایه مستقل از طول سایر عناصر هست:
{1,2,3}
{4,5}
{6,7,8,9}

از نظر تئوری، استفاده از آرایه های Jagged بهینه تر از آرایه های multidimensional هست، چون کامپایلر با این آرایه ها به عنوان نوع داده vector بجای array رفتار میکنه، و کدهای IL مخصوص به vector را برای آن بکار میبره، در نتیجه، کدهای تولید شده تا حدودی بهینه تر هستند.

#aliyari_C
شنبه 03 اسفند 1387, 14:41 عصر
یک آرایه نا هموار انعطاف بیشتری در سلیز بندی آرایه دارد.بایک آرایه ناهموار هرردیف می تواند سایز متفاوتی داشته باشد.
jagged Array
http://z.about.com/d/visualbasic/1/0/P/M/blogjaggedarray01.gif

Open-Source
شنبه 03 اسفند 1387, 14:58 عصر
يه سوال ؟؟؟
اين آرايه هاي دندانه اي چه كاربردهايي دارند؟

vcldeveloper
شنبه 03 اسفند 1387, 17:58 عصر
اين آرايه هاي دندانه اي چه كاربردهايي دارند؟ همانطور که گفته شد، می توان در آنها عناصری با طول متغیر نگهداری کرد. این یعنی:
1- مصرف حافظه آن کاراتر از آرایه های Multidimensional هست.
2- تغییر در عناصر آرایه راحتتر و با سربار کمتر انجام میشه.

اصلا اون چیزی که در #C به عنوان آرایه Multidimensional مطرح هست، در سایر زبان های متداول مثل ++C یا جاوا وجود نداره. در اون زبان ها Jagged Array را به عنوان Multidimensional Array می شناسند، و چیزی معادل Multidimensional Array موجود در #C در آنها وجود نداره. پس فکر کنم شما باید بپرسید، Multidimensional Array موجود در #C چه کاربردی داره که طراحان این زبان تصمیم گرفتند از آن در کنار Jagged Array استفاده کنند؟

شاید یکی از کاربردهای Multidimensional Array معرفی شده در #C استفاده ساده تر توسط برنامه نویس، و کارایی بالا در زمانی که عناصر آرایه نوع داده های ساده ایی با طول ثابت هستند، باشه. چون در این حالت، هم برنامه نویس نیازی نداره تک تک ابعاد آرایه را مقداردهی اولیه بکنه، هم دسترسی به تمام عناصر آرایه توسط کامپایلر با یک جمع و ضرب ساده امکان پذیر هست، و تمام عناصر آرایه هم در کنار هم قرار می گیرند.