sourcecode
چهارشنبه 16 مهر 1393, 15:47 عصر
من یک بردار(وکتور) از نوع int ایجاد کردم بدون مقدار اولیه .
Vector <int> a;
با دستور Reserve اندازه بردار رو زیاد میکنم .
a.Reserve(10);
حال به اولین خانه مقدار میدم
a[0]=1;
و سپس برنامه را اجرا کنیم که خطای زیر ظاهر میشود .
124349
سوال من اینه که :
کد زیر را در نظر بگیرید .
Vector <int> a;
a.reserve(10);
a[0]=1;
به محض اجرا خطایی مانند تصویر بالا نمایش داده میشه . حال اگه کد را به شکل زیر تغییر دهیم مشکل برطرف میشه .
Vector <int> a(1);
a.reserve(10);
a[0]=1;
حالا اگه از دستور زیر استفاده کنیم کامپایلر دوباره خطا میگیره.
a[1]=2;
در صورتی که من فضایی به طول 10 خانه ایجاد کردم پس چرا برنامه خطا می گیره . وظیفه دستور Reserve چیه .
یا من برداری مانند زیر ایجاد کنم .
Vector <int> a(5);
حال اگه در حین اجرا برنامه به ظرفیت بیشتر از 5 لازم داشته باشم با کمک دستور Reserve مقدارش را زیاد می کنم .
a.Reserve(10);
حال اگه کد زیر رو استفاده کنم کامپایلر اررور میده
a[8]=8;
و برای اینکه هنگام استفاده , این خطا برای بردار دوباره ظاهر نشه باید در محدوده ای که در هنگام ایجاد بردار به صورت پیشفرض مقدار دادیم ( که 5 هست ) استفاده کنیم . در کل استفاده از دستور
Reserve چطوریه .
Vector <int> a;
با دستور Reserve اندازه بردار رو زیاد میکنم .
a.Reserve(10);
حال به اولین خانه مقدار میدم
a[0]=1;
و سپس برنامه را اجرا کنیم که خطای زیر ظاهر میشود .
124349
سوال من اینه که :
کد زیر را در نظر بگیرید .
Vector <int> a;
a.reserve(10);
a[0]=1;
به محض اجرا خطایی مانند تصویر بالا نمایش داده میشه . حال اگه کد را به شکل زیر تغییر دهیم مشکل برطرف میشه .
Vector <int> a(1);
a.reserve(10);
a[0]=1;
حالا اگه از دستور زیر استفاده کنیم کامپایلر دوباره خطا میگیره.
a[1]=2;
در صورتی که من فضایی به طول 10 خانه ایجاد کردم پس چرا برنامه خطا می گیره . وظیفه دستور Reserve چیه .
یا من برداری مانند زیر ایجاد کنم .
Vector <int> a(5);
حال اگه در حین اجرا برنامه به ظرفیت بیشتر از 5 لازم داشته باشم با کمک دستور Reserve مقدارش را زیاد می کنم .
a.Reserve(10);
حال اگه کد زیر رو استفاده کنم کامپایلر اررور میده
a[8]=8;
و برای اینکه هنگام استفاده , این خطا برای بردار دوباره ظاهر نشه باید در محدوده ای که در هنگام ایجاد بردار به صورت پیشفرض مقدار دادیم ( که 5 هست ) استفاده کنیم . در کل استفاده از دستور
Reserve چطوریه .