C ++动态数组,没有STL的push_back

时间:2015-06-30 16:16:31

标签: c++ arrays dynamic

我遇到了动态数组。我想从文本文件中读取整数并将它们存储到数组中。我需要一个push_back和size函数,但不能使用矢量中的STL。我试图做一个push_back函数,但我需要使用size函数。对于size函数,我想通过数组并为每个元素递增一个计数器,但是如何停止循环,例如for(int i = 0; i&lt; d_array.end(); i ++),使用.end()我需要包含<array>

感谢提示。

到目前为止我的代码:

#include <fstream>
#include <iostream>
#include <string>


using namespace std;


int main()
{
    int* d_array = 0;

    const string filename = "test.txt";
    int s = 0;
    int counter = 0;
    fstream f;
    f.open(filename, ios::in);

    if (f){
        while (f >> s){
            counter += 1;
        }
    }

    d_array = new int[counter];

    if (f){
        while (f >> s){
            d_array.push_back(s);
        }
        f.close();
    }


    for (int i = 0; i < d_array.size(); i++){
        cout << d_array[i] << "\n";
    }


    void push_back(int value){
        int d_size = d_array.size();
        int* d2_array = 0;
        d2_array = new int[d_size + 1];
        d_array = d2_array;
        d_array[d_size] = value;
        delete[] d2_array;
    }

    int size() const{

    }
}

1 个答案:

答案 0 :(得分:2)

你问的是错误的问题。你正试图解决这个问题

  

如果仅指向其开头的指针

,我如何找到动态分配的数组的长度

一般没有解决方案 - 但实际上你需要解决的问题是

  

如何创建包含动态分配数组的数据结构,以便获取数组的大小?

这有一个非常简单的解决方案,一旦你停止了你正在关注的问题......