如何确定阵列是否已满

时间:2017-02-09 21:25:48

标签: c++ arrays

我正在尝试从文件读入数组。但我正在分配我的数组大小= 5.无论文件有多大,它应该读取,直到它的大小然后停止然后我想复制所有元素已被读取到一个大小= 10的新数组并删除旧的one.Plus完成将文件读入我的新数组。每次新数组的大小应该是它的两倍时做同样的事情。 qoustion是如何确定我当前的数组是否已满?让我们说

      ifstream in; 

        while (in.fail()) 
        {
        cout << "Exit" << endl; 
        return 9; 
        }
        int size =5; 
        int* array;
        int* resize; 
        int inc=0; 
array = new int[size]; 
        while (in << *(array+inc)) 
        {
          inc++; 
         /// here i want to detrmine if it's full to do the rest of code
        }

    PrintArray(resize,size) 

任何提示或提示。

如何让这样的东西发挥作用。

    while (in >> *(array+inc) 
        {
           if (inc <=5) // if it reaches the size which is 5
        {
            for (int i=0; i<size i++) 
        { // to copy all elements to the new array
        resize[i] = array[i] 
        }// delete the old array
    delete[] array; 
    while (in >> *(resize+size) )  // to keep reading the file where it's stoped 

        }

    PrintArray(resize,size) // print it
delete[] resize; // delete the new array and so on
in.close();

任何建议

1 个答案:

答案 0 :(得分:1)

您无法以编程方式确定经典动态分配的c样式数组的容量。你通过使用各种sizeof尝试找到了这个。 (顺便说一下 - 你应该看看你是否能解决为什么你得到了各种错误的答案)

通过大小和计数器变量来了解自己跟踪大小和空间的唯一方法

这是矢量的优点之一 - 它为你做了所有这些

另见:How do I determine the size of my array in C?

额外信用:找到std :: vector实现的来源,看看它是如何做到的?