C++初学者 数组问题 数据数量未知

我现在想定义一个数组,数量未知。然后想一直输入元素,到输入为零的时候就停。有没有能实现的方法!求大神!

两个办法,一个是定义一个大一些的数组。比如int arr[100000],10万个元素,对于计算机来说,也就是400kb的空间,微不足道,但是足够用了,完全可以视作是任意个数输入都够了。
还有就是使用链表,每次动态分配一个空间。

这种方式还是别用数组了,用vector

使用Vector,它的大小可以动态的增加。

用mallo、relloc、free也可以实现

 #include <stdlib.h>
#include<stdio.h>
#include<malloc.h>
void main()
{
    int *p,count=0,psize=10,n=1;

    p=(int *)malloc(psize*sizeof(int));
    while(n!=0)
    {
        scanf("%d",&n);
        if(n==0)break;
        p[count++]=n;
        if(count>=psize)
        {
            psize+=10;
            p=(int*)realloc(p,psize*sizeof(int));//重新分配内存,增加10个int空间,并复制原有数据
        }
    }

    for(int i=0;i<count;i++)
        printf("%d ",p[i]);

    free(p);
}

ysuwood的方法比较合适。只是有一点或许可以改进:每次重新分配空间时,检查新分配得到的指针是否与原来p相同,若不同则应该将原来的空间释放再为指针p重新赋值。这样可以避免内存泄露。

就用stl里面的vector 或者 list把,他们都具有高效率,并且自动扩容 ...