PDA

View Full Version : مقدار دهی آرایه پویا



pedram.11
دوشنبه 16 تیر 1393, 16:03 عصر
سلام ببخشید من هرجا در مورد مقدار دهی اولیه آرایه پویا خوندم از دستور زیر استفاده کرده بود:

int *p=new int[x];
memset(p,INT_MAX,sizeof(int)*x);

اما آرایه با مقدار -1 ست میشه، چطور میشه آرایه رو با مقدار غیر صفر ست کرد؟ البته بدون حلقه for و متد fill

omid_kma
دوشنبه 16 تیر 1393, 16:43 عصر
آرایه int رو با memset فقط میشه مقدار ۰ و -۱ داد
از std::fill استفاده کنین
http://www.7khatcode.com/index.php?qa=36&qa_1=%D8%B3%D8%B1%DB%8C%D8%B9-%D8%AA%D8%B1%DB%8C%D9%86-%D8%B1%D8%A7%D9%87-%D9%85%D9%82%D8%AF%D8%A7%D8%B1-%D8%A7%D9%88%D9%84%DB%8C%D9%87-%D8%AF%D8%A7%D8%AF%D9%86-%D8%A8%D9%87-%D8%A2%D8%B1%D8%A7%DB%8C%D9%87

rahnema1
دوشنبه 16 تیر 1393, 18:41 عصر
سلام
با این روش میشه در حد short یا unsigned short یعنی USHRT_MAX مقدار داد
#include <stdio.h>
#include <limits.h>
#include <wchar.h>
int main(){
short int *p=new short int[x];
wmemset((wchar_t *)p,SHRT_MAX,x*sizeof(short int));
}

اما با vector هم میشه

std::vector<int> p (x,INT_MAX);
std::vector<int> p (x,numeric_limits<int>::max());

یه نکته دیگه اگه ممکنه سوال خودتون را اصلاح نکنید در صورتی که لازم دیدید یه پست جدید بذارید تا دوستان بتونند بهتر کمک کنند

pedram.11
دوشنبه 16 تیر 1393, 20:20 عصر
ممنون از جوابتون، بنده با توجه به اینکه کامپایلری که قراره کدهارو اجرا کنه یک سری هدر هارو نداره(از جمله xutility) برای همین این کدها به کار بنده نمیان،
در مورد نکته ای هم که فرمودید بنده قبل از اینکه به سوال بنده جوابی داده بشه در مورد متد fill میدونستم و برای همین پستمو اصلاح کردم که کسی زحمت نکشه و در موردش توضیح نده که به صورت اتفاقی دوستمون در یک زمان جوابشون رو پست کردن.

rahnema1
دوشنبه 16 تیر 1393, 23:14 عصر
اگه کامپایلر شما توانایی این را داشته باشه که یک dll را بخونه می تونید با یک کامپایلر جدیدتر این کد را به صورت dll در بیارید و در برنامه ای که توسط ان کامپایلر می نویسید استفاده کنید

#include <wchar.h>
extern "C" void memset2byte(short int* p,short int val,int size){
wmemset((wchar_t *)p,val,size);
}

pedram.11
دوشنبه 16 تیر 1393, 23:23 عصر
اگه کامپایلر شما توانایی این را داشته باشه که یک dll را بخونه می تونید با یک کامپایلر جدیدتر این کد را به صورت dll در بیارید و در برنامه ای که توسط ان کامپایلر می نویسید استفاده کنید

متاسفانه فقط یک فایل کد هست و نه هدر و نه کلاس و هیچ چیز خارجی دیگه نمیشه اضافه کرد... دنبال یه راه سریعتر از حلقه میگشتم که نشد، از همون حلقه استفاده کردم، ممنون از لطفتون