C++如何定义未知大小的数组?

如题所述

如果数组的元素个数不知道的话,只能通过动态内存分配了,静态内存分配是没有办法实现的,因为静态内存分配在定义数组的时候必须指定数组的大小为一个常量或者常数,例如:
int array[10];
或者
const int Size=10;
int array[Size]。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-01-09
...........
首先我从未碰到需要定义未知大小的数组;
其次既然知道大小未知是无法定义数组的;当然也就无法直接定义了
--------------------------
如果硬要用,只有自己做咯, 灵活用指针....下面例子仅仅用int型做个示范,更多用法可以参考标准库怎么实现的:
class PointerArray
{
public:
PointerArray() : m_pData(NULL) , m_nSize(0), m_nLen(0)
{
}
virtual ~PointerArray()
{
if (NULL != m_pData)
{
delete[] m_pData;
m_pData = NULL;
}
}
protected:
int m_nSize;
int m_nLen;
int *m_pData;
};
class CMyArray::public PointerArray
{
public:
CMyArray (int nSize = 10)
{
if (nSize <= 0) nSize = 10;
m_nSize = nSize;
m_pData = new int[m_nSize];
}
~CMyArray ()
{
}
public:
int Length() const
{
return m_nLen;
}
bool addData(int src) //
{
if (m_nLen >= m_nSize)
{
int nSize = m_nSize * 2 + 1;
int *pTemp = new int [nSize];
if (!pTemp) return false;
memcpy(pTemp, m_pData, sizeof(int) * m_nLen);
delete []m_pData;
m_pData = pTemp;
m_nSize = nSize;
}
memcpy(m_pData + m_nLen, &src, sizeof(int));
m_nLen++;
return true;
}
};
使用方法:
CMyArray myArray(1); //定义只有一个元素的我们实现的CMyArray对象
myArray.addData(xxx); 可以任意 调用addData
第2个回答  2012-01-09
你可以动态创建这个数组 ,如
int *a = new int[100];
这儿就是创建一个100长度的int型数组
第3个回答  2012-01-09
如int a[1000]
即可本回答被网友采纳
第4个回答  2012-01-09
可以用vector实现

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网