نمایش نتایج 1 تا 5 از 5

نام تاپیک: استفاده از آرایه دندانه ای

  1. #1

    استفاده از آرایه دندانه ای

    میخوایم یه دونه ارایه دندانه ای از نوع string داشته باشم برای تعریف ایرادی نمیگیره
    اما برای تعریف دندانه ها و مقدار دهیشون ایراد میگیره کسی میتونه کمک کنه؟

  2. #2
    کاربر دائمی آواتار ordebehesht
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    یه گوشه دنج از این دنیا
    پست
    845

    نقل قول: استفاده از آرایه دندانه ای

    آرایه دندانه ای دیگه چیه؟؟؟؟؟؟؟؟؟

  3. #3
    مدیر بخش آواتار مهرداد صفا
    تاریخ عضویت
    تیر 1391
    محل زندگی
    select Country,City From World where Country.Name=IRAN and City.Contains(حضرت معصومه(ع))
    پست
    1,499

    نقل قول: استفاده از آرایه دندانه ای

    سلام
    میتوانید به روش زیر عمل کنید:

    string[][] strings = new string[5][]{
    new string[5],new string[5],new string[5],new string[5],new string[3]};
    چشم ظاهر گر نبیند عیب نیست چشم دل گر ننگرد باید گریست
    **********
    اَلسَّلامُ عَلَى الْحُسَيْنِ وَ عَلى عَلِىِّ بْنِ الْحُسَيْنِ وَ عَلى اَوْلادِ الْحُسَيْنِ وَ عَلى اَصْحابِ الْحُسَيْنِ

  4. #4
    کاربر دائمی آواتار group45
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    کرمان
    سن
    36
    پست
    549

    نقل قول: استفاده از آرایه دندانه ای

    نقل قول نوشته شده توسط M.safa مشاهده تاپیک
    سلام
    میتوانید به روش زیر عمل کنید:

    string[][] strings = new string[5][]{
    new string[5],new string[5],new string[5],new string[5],new string[3]};
    با سلام
    این آرایه به چه کاری میاد؟
    مدیریتش تو رم چطوریه؟
    حافظه زیادی میخواد؟

  5. #5
    مدیر بخش آواتار مهرداد صفا
    تاریخ عضویت
    تیر 1391
    محل زندگی
    select Country,City From World where Country.Name=IRAN and City.Contains(حضرت معصومه(ع))
    پست
    1,499

    نقل قول: استفاده از آرایه دندانه ای

    نقل قول نوشته شده توسط group45 مشاهده تاپیک
    با سلام
    این آرایه به چه کاری میاد؟
    مدیریتش تو رم چطوریه؟
    حافظه زیادی میخواد؟

    مجددا سلام

    این آرایه (در حالت دو بعدی) در واقع آرایه ایست از آرایه ها که هر یک از آرایه های عضو میتوانند طول مختص به خود را داشته باشند. این موضوع میتواند در مدیریت بهتر داده ها مفید باشد. مثلا ارایه ای می خواهیم از کلاسهای یک مدرسه که کلاسها هم ممکن است تعداد متفاوتی دانش آموز داشته باشند، با استفاده از jagged array میتوانیم به صورت زیر تعریف کنیم:

    string[][] classes = new string[2][]{
    new string[ClassRoom1.Length],new string [ClassRoom2.Length]};


    یا فرض کنید میخواهیم تعدادی فایل را با طول متفاوت در حافظه بخوانیم. اگر تعداد فایلها زیاد باشد کنترل تعداد زیادی آرایه میتواند کنترل کدهای برنامه را مشکلتر کند در حالی که میتوانیم همه این آرایه ها را در یک آرایه دیگر قرار دهیم:

    string[] files=Directory.GetFiles(@"e:\temp\","*");
    byte[][] buffers = new byte[files.Length][];
    for (int i=0;i< buffers.Length;i++)
    {
    buffers[i]=File.ReadAllBytes(files[i]);
    }


    jagged array ساختار متفاوتی نسبت به آرایه دو بعدی دارد. مثلا در یک آرایه هزار در هزار در مورد jagged array یک آرایه کلی و هزار آرایه عضو (در مجموع 1001) شی در manage heap ساخته میشود که گذشته از فضای 1000000 خانه ای آرایه، 1001 شی خود فضایی را اشغال میکند در حالی که یک آرایه دو بعدی با همین طول در واقع یک شی با طول 1000000 خانه به وجود می آورد.
    در یک مثال به بررسی فضای اشغالی هر مورد می پردازیم.
    یک آرایه دندانه ای 1000X1000:

    long BeforeAllocate=GC.GetTotalMemory(true);
    byte[][] JaggedArray = new byte[1000][];
    for (int j = 0; j < 1000; j++)
    {
    JaggedArray[j]=new byte[1000];
    }

    Console.WriteLine("memory used for 1000*1000 jagged array: " + (GC.GetTotalMemory(true)-BeforeAllocate).ToString());

    نتیجه:
    memory used for 1000*1000 jagged array: 1016016


    یک آرایه دو بعدی 1000X1000:

    BeforeAllocate = GC.GetTotalMemory(true);
    byte[,] Array2D = new byte[1000, 1000];
    Console.WriteLine("memory used for 1000*1000 Array2D: "+ (GC.GetTotalMemory(true) - BeforeAllocate).ToString());

    نتیجه:
    memory used for 1000*1000 Array2D: 1000032

    توضیح:
    ابتدا فضای کلی مورد استفاده برنامه را در یک متغیر (BeforeAllocate) ریختیم و آرایه را ساخته فضای قبلی را از فضای فعلی کم کردیم و نتیجه را که فضای مصرفی آرایه است، نمایش دادیم. این فضا در مورد آرایه دندانه ای گذشته از 1000000 بایتی که فضای داده های آرایه است، برابر با 1616=1001*16 بود. و در مورد آرایه دو بعدی 32 بایت. البته این اختلاف در مورد آرایه های سه بعدی یا بیشتر، بسیار بیشتر از این میشود.

    برای درک بهتر تفاوت عملکرد هر یک از این دو نوع آرایه، یک کتاب دو هزار صفحه ای را در نظر بگیرید. اگر این کتاب در ده جلد 200 صفحه ای و در یک قفسه نگهداری شود:
    1- ساخت و چیدن کتابها در قفسه زمانبر تر است.
    2- کتابها و مطالب آنها منظمترند و دسترسی به مطلب مورد نظر بسیار سریعتر صورت میگیرد.
    3- جابه جایی و بیرون بردن کتابها و قفسه نیاز به زمان بیشتری دارد.
    ولی اگر یک کتاب دو هزار صفحه ای داشته باشیم جابه جایی آن راحتتر است ولی پیدا کردن یک مطلب مشخص در میان دو هزار صفحه زمان بیشتری نیاز دارد.
    نتیجه گیری اخلاقی:
    1- آرایه های دندانه ای زمان بیشتری برای ساخت و memory allocation نیاز دارند.
    2- آرایه های دندانه ای انعطاف پذیر ترند.
    3- دسترسی مستقیم به اعضای آرایه های دندانه ای با سرعت بیشتری انجام میشود.
    4- آرایه های دندانه ای فضای بیشتری را در حافظه اشغال میکنند.
    5- آرایه های دندانه ای زمان بیشتری برای تخریب (آزاد سازی منابع) نیاز دارند.

    موفق باشید!
    چشم ظاهر گر نبیند عیب نیست چشم دل گر ننگرد باید گریست
    **********
    اَلسَّلامُ عَلَى الْحُسَيْنِ وَ عَلى عَلِىِّ بْنِ الْحُسَيْنِ وَ عَلى اَوْلادِ الْحُسَيْنِ وَ عَلى اَصْحابِ الْحُسَيْنِ

تاپیک های مشابه

  1. کد محاسبه فاکتوریل با استفاده از آرایه
    نوشته شده توسط مهدی ص در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 9
    آخرین پست: یک شنبه 29 اردیبهشت 1392, 09:25 صبح
  2. استفاده از آرایه در فرم
    نوشته شده توسط rahro در بخش Foxpro
    پاسخ: 16
    آخرین پست: دوشنبه 18 تیر 1386, 09:24 صبح
  3. مشکل استفاده از آرایه در Perl
    نوشته شده توسط Developer Programmer در بخش دیگر زبان های اسکریپتی
    پاسخ: 1
    آخرین پست: دوشنبه 07 خرداد 1386, 18:07 عصر
  4. خطا در استفاده از آرایه
    نوشته شده توسط mehdi_mohamadi در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 7
    آخرین پست: چهارشنبه 02 خرداد 1386, 17:47 عصر
  5. استفاده از آرایه به عنوان پارامتر مشترک
    نوشته شده توسط somayehk در بخش C#‎‎
    پاسخ: 1
    آخرین پست: دوشنبه 21 شهریور 1384, 07:23 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •