如何在C++中创建一维动态数组

编写一个程序,需要从屏幕输入若干个int,保存在一个数组里。但是在程序运行之前并不知道共有多少个元素,因此必须用动态数组。我想先创建一个指针,每新读入一个值,指针(数组)的尺寸就增加1。是否可以实现?
不要malloc函数,ubuntu不支持。

#include<iostream>

usingnamespacestd;

classPoint{

public:

Point(intx,inty):x(x),y(y){

cout<<"调用构造函数"<<endl;

}

Point():x(0),y(0){

cout<<"调用默认构造函数"<<endl;

}

~Point(){

cout<<"调用析构函数"<<endl;

}

intgetX()const{returnx;}

intgetY()const{returny;}

voidmove(intnewx,intnewy){

x=newx;

y=newy;

}

private:

intx,y;

};

intmain(){

Point*prt=newPoint[2];//创建对象数组

prt[0].move(3,4);//通过指针访问数组成员

prt[1].move(4,3);

delete[]prt;

return0;

}

扩展资料

C++动态二维矩阵

#include<iostream>

使用命名空间std;

intmain()

{

intd1,d2;

cout<<“输入数组的行和列尺寸:\n”;

cin>>d1>>d2;

int**m=新的int*[d1];

inti,j;

对于(i=0;i<d1;i++)

m[i]=newint[d2];

//m现在是d1xd2数组。

对于(i=0;i<d1;i++)

对于(j=0;j<d2;j++)

m[i][j]=(i+1)*10+j;

cout<<“回显二维数组:\n”;

for(i=0;i<d1;i++)

{

for(j=0;j<d2;j++)

cout<<m[i][j]<<“”;

cout<<endl;

}

对于(i=0;i<d1;

i++)delete[]m[i];

delete[]m;

系统(“暂停”);

返回0;

}

/*

输入数组的行和列尺寸:

45

回声二维数组:

1011121314

2021222324

3031323334

4041424344

*/

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-16
ubuntu中malloc函数肯定是可以用的,lz是不是没有包含相应的头文件?
动态数组的实现代码如下
typedef struct DYNAMICINTARRAY
{
int m_iSize; // 当前已经容纳几个整数
int m_iCapacity; // 总能能容纳几个整数
int *m_pData; // 数据空间
} DynamicIntArray;

void DynamicIntArray_Append(DynamicIntArray *pArray, int iNewVal)
{
if (pArray->m_iSize == pArray->m_iCapacity) // 空间满时
{
// 重新开辟一个原始大小2倍的空间
pArray->m_iCapacity *= 2;
int *pNewData = (int *)malloc(sizeof(int) * pArray->m_iCapacity);
// 将原始数据拷入新的空间中
memcpy(pNewData, pArray->m_pData, pArray->m_iSize * sizeof(int) / 2);
// 释放掉旧的空间
free(pArray->m_pData);
pArray->m_pData = pNewData;
}
// 写入新数据
pArray->m_pData[m_iSize++] = iNewVal;
}
第2个回答  2011-07-19
设定一个值n为数组大小
例子如下:
int n= 0; //数组大小,初始化为0
cin>>n; //改变n的大小
int* num = new int[n]; //创建了一个大小为n的数组

这样就创建了一个指定大小的动态数组
为数组赋值和正常数组一样
即num[0] = 1,num[1] = 2....

使用完成后不要忘记用delete [] num 释放
第3个回答  推荐于2017-11-24
你可以用new 和 delete组合来分配存储空间
比如:
int n;
int *a=new int[n]
;
不过你要记得在最后用delete释放掉哦!!!本回答被提问者和网友采纳
第4个回答  2011-07-16
刚好我也做到这个, 直接把我的代码粘上了哈,希望能给楼主帮上忙
C++中还提供了一个函数,类似于"_extent"的,那个在free时会出错,好像是函数库版本的事情,我调试了好久才发现的,建议楼主直接不用了吧.

CPublic::pStaticCMyDoc->Method = (P_METHOD_X_10) realloc(CPublic::pStaticCMyDoc->Method, sizeof(_METHOD_X_10)*(CPublic::pStaticCMyDoc->TotalSum+1));

C++如何用new动态开辟一个一维字符数组
C++用new动态开辟一个一维字符数组步骤如下:1、new 分配内存,通用格式是:类型名 * 指针 = new 类型名;如 int * pi = new int;类型可以是基本数据类型、结构体、自定义类等。2、delete 来释放内存,通用格式是:delete 指针名;注意 delete 与 new 配对,只能释放 new 分配的内存。delete只能...

c++中怎样定义动态数组
1、new 动态定义数组 2、因为new 就是用来动态开辟空间的,所以当然可以用来开辟一个数组空间。这样,下面的语句:int size=50; int *p=new int[size]; \/\/是正确的3、但是二维动态数组能不能也这样定义呢 int size=50,Column=50; int (*p)[Column]=new int [size][Column](1)首先 ne...

C++编写动态一维数组,其主要数据成员为int *p和int len,也就是动态数 ...
class Vec{private:int *p;int length;public:Vec(){ this->length=0; } Vec(int n){ this->length=n; p=new int[n]; } void scopy(Vec p){ if(this->lenth>=p.length){ int i; for(i=0;i<p.length;i++){ *(p+i)=*(q+i); } ...

C++怎么在结构体里定义动态数组
可以在结构体中添加指针类成员变量,并在成员函数中实现动态数组的分配。以下以一个仅实现整型动态数组,不包含其它功能的类为例做说明。class array \/\/类名{ public: int *v; \/\/动态数组首地址。 int length; \/\/动态数组长度。 array(int len) { if(len <= 0)\/\/初始化长...

怎么使用new操作符创建动态数组?
new命令是C++的专用命令,用来动态分配内存空间。 相当于C语言中的malloc()函数功能。用new创建动态数组的应用过程:1、定义指针变量 2、获得数组长度 3、用new分配相应的内存空间 4、使用动态数组 5、不再使用该内存时,释放指针,相应命令为:delete 参考代码:include<iostream>using namespace std;int...

C++ 中string类如何创建动态数组?求助!!!
C++本身并不支持动态数组,但是可以通过动态申请内存实现动态数组的功能。实现代码的例子如下:int count;cout<<"请输入数组大小";cin>>count;string ptr=new string[count];\/\/下面就可以使用类似动态数组的数据 delete []ptr;\/\/ 不用的时候务必自己释放该内存 ...

C++问题:如何定义一个未知大小的一维数组,数组大小由输入的值决定_百度...
方法一:……int n;cout<<"请输入你想建立的一维数组维数:"<<endl;cin>>n;int *array = new int[n];……delete [] array;方法二:现代c++程序一般用容器vector代替数组。vector<int> vec;添加值(比如1)用vec.pushback(1)

C++ 中string类如何创建动态数组?求助!!!
string其实就是对动态数组的封装,因此你不必在动态new,当然要这么做也可以,但是写法是string* pstr = new string;即可。不过你的问题不是出在这里,我改写了下,在vs2012下测试通过。include <iostream> include<string> using namespace std;int main( int nArgc, char** szArgv ){ string *...

C++new创建动态数组的问题
这里的一个实体是指的就是单一的类型,比如:int char struct class 这里主要是和一组相区别,不是new出上边那些类型的数组。其实很简单:int *pi = new int;delete pi;char *pchar = new char;delete pchar;int *piArray = new int[10];delete[] piArray;char* pCharArray = new char[10...

...如何定义一个由用户自己从键盘输入长度的一维数组?请用C和C++分别...
1、数组元素是组成数组的基本单元。数组元素也是一种变量,其标识方法为数组名后跟一个下标。下标表示了元素在数组中的顺序号。2、数组元素的一般形式,数组名 [下标],其中下标只能为整型常量或整型表达式。如为小数时,C编译将自动取整。3、a[5];a[i+j];a[i++]都是合法的数组元素。数组元素通常...

相似回答