PDA

View Full Version : تغیر اندازه آرایه پویا در C++



Mahdi13.ir
شنبه 14 فروردین 1395, 12:04 عصر
سلام
چطور میشه یدونه یدونه انداره یک آرایه رو در C++ تغیر بدیم؟
مثلا تا وقتی که هزار عضو وجود داره و کافیه تعداد آرایه تغیری نکنه ولی در صورت نیاز آرایه پویا تغیر کنه.

mohammad0773
شنبه 14 فروردین 1395, 13:30 عصر
سلام.من یه راه برای به دست آوردن تعداد عناصر بلدم که با عملگر sizeof کار میکنه،این تابع مقدار بیت هایی که آرگومان اشغال میکنه رو برمیگردونه.یه مثال میزارم بقیش با خودت،یا علی:

#include <iostream>
#include <cstdlib>
using namespace std;
int main() {
int arr[4]={4,7,23,1};
cout<<sizeof(arr)/sizeof(int);
system("pause");
return 0;
}

#target
شنبه 14 فروردین 1395, 18:37 عصر
میتونی با realloc (http://www.cplusplus.com/reference/cstdlib/realloc/)تغییر سایز بدی البته لزوما یکی یکی اضافه کردن بهینه نیست!
آرایه رو با malloc در ابتدا ایجاد کنید.

Mahdi13.ir
یک شنبه 15 فروردین 1395, 06:52 صبح
میتونی با realloc (http://www.cplusplus.com/reference/cstdlib/realloc/)تغییر سایز بدی البته لزوما یکی یکی اضافه کردن بهینه نیست!
آرایه رو با malloc در ابتدا ایجاد کنید.
ممنون
پیشنهاد خیلی خوبیه
ولی راهی داره دیگه از این توابع اسفاده نکنم؟

C3phalex1n_0x
دوشنبه 16 فروردین 1395, 09:56 صبح
شما چیزی در مورد لیست های پیوندی می دونید؟ اگر می دونید بهتر است از لیست پیوندی برای ذخیره داده های پویا استفاده کنید.
البته در موردی که شما می خواهید، استفاده از وکتور هم می تواند مناسب باشد.

Mahdi13.ir
دوشنبه 16 فروردین 1395, 17:01 عصر
از شماهایی که کمکم کردید بی نهایت سپاسگذارم.

ciavosh
پنج شنبه 26 فروردین 1395, 13:32 عصر
در cpp به هیچ وجه نباید ازتوابع خانواده malloc استفاده بشه. این توابع در برنامه‌های C کاربرد دارند. در cpp باید از کانتینرهای استاندارد مثل vector استفاده کرد.
آیا کسی خبر داره آرایه پویا در استاندارد جدید CPP وارد شده یا نه؟

C3phalex1n_0x
جمعه 27 فروردین 1395, 07:26 صبح
در cpp به هیچ وجه نباید ازتوابع خانواده malloc استفاده بشه. این توابع در برنامه‌های C کاربرد دارند. در cpp باید از کانتینرهای استاندارد مثل vector استفاده کرد.
آیا کسی خبر داره آرایه پویا در استاندارد جدید CPP وارد شده یا نه؟

خود وکتوری که شما گفتید، یک آرایه پویا ارائه می ده دیگه.

ciavosh
جمعه 27 فروردین 1395, 11:03 صبح
آرایه پویا یا VLA (http://en.wikipedia.org/wiki/Variable-length_array)که در استاندارد C99 وارد شده از امکانات داخلی کامپایلر C هست. در مقابل وکتور یک تمپلیت کلاس هست که به زبان سیپلاسپلاس نوشته شده و ساپورت خاصی از طرف کامپایلر نداره.

LinuxBox
پنج شنبه 02 اردیبهشت 1395, 19:03 عصر
در cpp به هیچ وجه نباید ازتوابع خانواده malloc استفاده بشه. این توابع در برنامه‌های C کاربرد دارند. در cpp باید از کانتینرهای استاندارد مثل vector استفاده کرد.
آیا کسی خبر داره آرایه پویا در استاندارد جدید CPP وارد شده یا نه؟

بستگی به کامپایلر مورد استفاده داره
در حال حاضر GCC از VLA پشتیبانی میکنه اما VS نسخه 2015 هم از این قابلیت پشتیبانی نمیکنه.