PDA

View Full Version : سوال: تعریف آرایه ی n بعدی؟؟



milad73
جمعه 24 آذر 1391, 23:17 عصر
سلام کسی میتونه راهنماییم کنه که چطور میتونم آرایه ی n بعدی تعریف کنم؟؟
یعنی n را از کاربر بگیره بعد ارایه رو بسازه ؟؟
با تشکر.:متفکر:

omidshaman
شنبه 25 آذر 1391, 09:26 صبح
میتونی از vector استفاده کنی
http://www.cplusplus.com/reference/vector/vector/
مثال

vector <int> myvector;
myvector.resize(n);

Arashdn
شنبه 25 آذر 1391, 18:30 عصر
میتونی از vector استفاده کنی
http://www.cplusplus.com/reference/vector/vector/
مثال

vector <int> myvector;
myvector.resize(n);

جایی دارید که یه کم بهتر توضیح داده باشه؟

H_G_G_I
شنبه 25 آذر 1391, 19:02 عصر
ارایه n بعدی تو نت هست کلاسش ! می تونی بنویسی .
برا سه بعدی دینامیک اینطوری می شه !

//3DArray
const size_t X = 4;
const size_t Y = 2;
const size_t Z = 5;

int*** arr = new int**[X];
for(int i = 0; i< X; i++)
{
arr[i] = new int*[Y];
for(int j = 0; j< Y; j++)
{
arr[i][j] = new int[Z];
}
}

arr[0][0][0] = 123;
arr[3][1][4] = 45l;

omidshaman
شنبه 25 آذر 1391, 21:49 عصر
جایی دارید که یه کم بهتر توضیح داده باشه؟
البته منظور من ساختن یک ارایه n عضوی بود نه n بعدی
کتاب Accelerated C++‎‎ Practical Programming by Example
یا
http://www.dreamincode.net/forums/topic/33631-c-vector-tutorial/
یا
http://wdl.persiangig.com/pages/download/?dl=http://salarcpp.persiangig.com/4/Vectors%20in%20CPP.rar

H_G_G_I
یک شنبه 26 آذر 1391, 14:44 عصر
برای چند بعدی باید کلاسشو بنویسی تا بهتر دراد !
من الان یکی می نویسم ولی یه قسمتشو خودم مشکل دارم کسی تونست بگه . (set,get)
تو یه تاپیک پرسیدم همین دیروز کسی جواب نداد .
http://barnamenevis.org/showthread.php?373816-%D9%85%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1-%DA%A9%D9%84%D8%A7%D8%B3-%D8%A7%D8%B1%D8%A7%DB%8C%D9%87-%D8%B3%D9%87-%D8%A8%D8%B9%D8%AF%DB%8C-((
-
-
الان این فقط باید get و set و اون یکی سازندش پیاده سازی بشه + یه چیزای دیگه .
این همه بعدیه ! هرچی بدی می خوره !

template <typename _Type, size_t _Depth> class ArrayND
{
public:
_Type* m_arr;
size_t m_sizes[_Depth];
ArrayND(...);
ArrayND(size_t _sizes[_Depth]);
T get(...);
void Set(T, ...);
};

template <typename _Type, size_t _Depth>
ArrayND<_Type, _Depth>::ArrayND( size_t _sizes[_Depth] )
{
size_t l_size = 1;
for(int i = 0; i < _Depth; i++)
{
m_sizes[i] = _sizes[i];
l_size += l_size * _sizes[i];
}
m_arr = new _Type[l_size];

}

template <typename _Type, size_t _Depth>
ArrayND<_Type, _Depth>::ArrayND( ... )
{
//....
}

//----------
ArrayND<int, 4> l_arr(8,3,3,4);

milad73
یک شنبه 26 آذر 1391, 18:29 عصر
[QUOTE=H_G_G_I;1652121]برای چند بعدی باید کلاسشو بنویسی تا بهتر دراد !
من الان یکی می نویسم ولی یه قسمتشو خودم مشکل دارم کسی تونست بگه . (set,get)
تو یه تاپیک پرسیدم همین دیروز کسی جواب نداد .
http://barnamenevis.org/showthread.php?373816-%D9%85%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1-%DA%A9%D9%84%D8%A7%D8%B3-%D8%A7%D8%B1%D8%A7%DB%8C%D9%87-%D8%B3%D9%87-%D8%A8%D8%B9%D8%AF%DB%8C-((
-

فکر کنم باید از vector استفاده بشه بجای ارایه چراک ه مثلا اگر کاربر 5بعدی خواست تعریف کنه که تعداد خانه های هر بعد به صورت روبرو باشند 3*4*5*6*7 اندازه ی vector نتیجه ی اون بشه به اون تعداد از حافظه را در اختیار بگیره البته چون vector تعریف شده میشه هر بعد رو نیز تغییر داد(مثلا اگر کاربر اشتباهی کرده بود و ..........) با تشکر