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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在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()constreturnx;

intgetY()constreturny;

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

*/

参考技术A 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;
参考技术B 设定一个值n为数组大小
例子如下:
int n= 0; //数组大小,初始化为0
cin>>n; //改变n的大小
int* num = new int[n]; //创建了一个大小为n的数组

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

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

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

如何在jquery或js中创建动态二维数组[重复]

【中文标题】如何在jquery或js中创建动态二维数组[重复]【英文标题】:How to create dynamic two dimensional array in jquery or js [duplicate] 【发布时间】:2012-06-08 10:40:05 【问题描述】:

我需要在 jquery 或 javascript 中创建全局二维数组

我的功能是这样的

<script>

var globalArray[0] = new Array();

function createArray()

    alert(globalArray[0]);         


</script>

<div><input type='button' value='save' onclick='createArray();'> </div>

单击该按钮时,我收到此错误"globalArray[0] is undefined"

如何创建全局动态多维数组。

【问题讨论】:

那个点$.("#uname")是错字吗? 你想用这段代码做什么? @gdoron 看起来像简单的元素推送,但方式有点奇怪。 索引永远不会改变,为什么它甚至在那里? uname 也未定义。缺乏细节导致问题多于答案 【参考方案1】:
if (!globalArray[index]) 
    globalArray[index] = []; // init the array.

globalArray[index].push(name);

你有一个点的错字:

$.("#uname").val(); 

改为:

$("#uname").val();

你想用这段代码做什么?


更新:(问题已完全编辑。)

您的代码:

var globalArray[0] = new Array(); 

globalArray[0]是无效的变量名,需要先声明数组:

var globalArray = []; // Array literal.
globalArray[0] =  [] // The element at position 0 is new an array. 

【讨论】:

globalArray[index].push(uname) 我更新了我的问题。你发布的内容并不能解决我的问题【参考方案2】:

if(loop == 0)
 globalArray[index][0] = uname;
else
  globalArray[index][loop++] = uname;

使用这个

if(loop > 0)
    globalArray[index][loop++] = uname;     
else
    globalArray[index][0] = uname;      

【讨论】:

是的,这很有道理....... 我什么都没做 那么对不起,你说的“还”是什么意思? 没有活动,我的意思是不会这样做,也不会贪婪的投票起伏 我更新了我的问题。请检查一下

以上是关于如何在C++中创建一维动态数组的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中的类中创建类对象的动态数组

Numpy,在 C++ 段错误中创建一维数组

C++动态申请数组问题

LeetCode1480. 一维数组的动态和(C++)

c ++动态指针数组[重复]

如何在 C# 中创建索引从 1 开始的一维数组