C++里面想定义一个数组,但不知道具体大小,怎么办?

小的时候只有1,2个,大的时候可能好几十万。所以不要说一个很大的数。
具体多少个每次也不一样……这样应该这么定义?
定义完了怎么赋值?
刚学C++没多久,求指导!详细点……谢谢……

可以先取值,后定义

int n;

cin>>n;

int *p=new int[n];

或者用vector容器,可以用push_back()函数动态增加元素的个数

#include<iostream>
#include<vector>
using namespace std;
/*
int main()
{
int i,n;
cin>>n;
int *p=new int[n];
for(i=0;i<n;i++)
cin>>p[i];
for(i=0;i<n;i++)
cout<<p[i]<<'\t';
cout<<endl;
return 0;
}
*/
int main()
{
vector<int> vec;
int t;
while(cin>>t)//回车之后 Ctrl+z 结束输入
vec.push_back(t);
unsigned i=0;
while(i<vec.size())
cout<<vec[i++]<<'\t';
cout<<endl;
return 0;
}

 

追问

这种方法是不是必须要用键盘输入一下确切多少个数?
我是读一个文件,读进来一个数存储一下,之前我也不知道有多少个数。

追答

vector容器可以实现你的要求呀,使用vector容器的时候,不需要定义容器大小,可以动态增加的
你把我给你的代码稍微改下就可以了

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-13
在C/C++中有多个函数能够达到你所需的功能,最常的是malloc()函数和new 命令
如临时开辟一个10个单元的整数空间:
用malloc:
int *pint;
pint=(int *)malloc(sizeof(int)*10);
用new:
同上:
int *pint;
pint=new int[10];
用完后要及时删除(释放):
针对第一种方法:
free(pint);
针对第二种方法:
delete[]pint;追问

new命令是怎么用的啊?
这个不还是要确切的数字么?(你举得例子就是10个)

第2个回答  2013-08-13
这种情况,只能通过动态malloc 一块内存空间来实现。

如, 现在需要申请一个int 型的数组, 大小为nNum;

int *intArray = (int *)malloc(nNum * sizeof(int));

然后可以像访问 数组一样访问intArray了。

在C++中如何在不知道一个数组具体大小的情况下声明一个数组?
第一种, 用宏定义。define N 20 int a[N];这个20是你自己可以改的。第二种,用动态定义 int *p = new Nsizeof(int);开辟了N个int型空间。能给分不

c++里怎么定义一个不知道大小的数组
这个数组可能很大很大,所以不要说写个绝对大的数,但是这个数组的大小可以由前面的一个需要从键盘输入值的变量决定,如:intten,s,i;cout<<"输入一个十进制数:\\n";cin>>ten;s=log(te...这个数组可能很大很大,所以不要说写个绝对大的数,但是这个数组的大小可以由前面的一个需要从键盘输入值的变量决定,如:int...

...如何定义一个数组,而这个数组的大小不确定,大小和数值由用户从键盘输...
先声明一个数组指针 然后根据需要动态分配存储空间 比如 int *a;int n;cin>>n; \/\/输入数组长度 a=new int(n); \/\/动态分配存储空间 \/\/下面就可以对数组a[] 进行赋值等操作了 ...\/\/最后别忘了用delete释放存储空间

C++问题:如何定义一个未知大小的一维数组,数组大小由输入的值决定_百度...
方法二:现代c++程序一般用容器vector代替数组。vector<int> vec;添加值(比如1)用vec.pushback(1)

C++如何定义未知大小的数组?
如果数组的元素个数不知道的话,只能通过动态内存分配了,静态内存分配是没有办法实现的,因为静态内存分配在定义数组的时候必须指定数组的大小为一个常量或者常数,例如:int array[10];或者 const int Size=10;int array[Size]。

c++如何输入一个不知道大小的字符串数组
可以用CString,或者判断while(putchar(c) != '\\n')

C++ 定义数组大小问题
解决的办法很简单,将这个大的数组放到其他地方即可,比如可以将这个数组放到静态存储区(定义为全局或静态static的),或者放到堆上(用new或malloc等等实现)另外,在编译器中修改默认栈大小也可解决这个问题(但不推荐)例:\/\/在堆上创建1000*1000的数组 int** a = new int*[1000];for(int i =...

C++中如何定义一个不知道长度的数组?求大神帮助
要定义一个不知道长度的数组是不可能的。。因为,“定义”是要在内存中开辟空间的。。假如说,你不知道要开辟多大的空间,系统怎么给你分配空间呢?? 不过,你可以实现动态分配空间。。比如:int len = 0;cin>>len;int *pointer = new int[len]; 首先要用户输入数组长度,然后再分配。这样就实现...

在C++中,如何对一个不确定大小的数组进行赋值?
可以通过动态分配的方法创建数组,也可以使用vector,个人觉得使用vector会很方便 \/\/动态数组分配 include <iostream> int main(){ int x,n,i=0;cout<<"将要输入的数字个数"<<endl;cin>>n;int * a = new int[n];\/\/动态分配一个有n个数据的数组 while(n){ cout<<"输入数字"<<endl;cin>...

C++声明了一个结构体数组,有什么办法可以获取这个数组的大小?_百度...
1、 你可以把这个数组做成一个 模版template、或者是一个 class, 写一个public函数,获得它的大小。2、比如一个结构体 typedef struct YourStruct YS; \/\/ struct YourStruct为你定义的struct YS ys[100]; \/\/结构体数组 ,有100个元素 int sz= sizeof(ys)\/sizeof(YS); \/\/...

相似回答