2015-06-30 3 views
-5

Я застрял в динамических массивах. Я хочу читать ints из текстового файла и хранить их в массиве. Мне нужна функция push_back и size, но не могу использовать STL из вектора. Я попытался сделать функцию push_back, но мне нужно использовать функцию размера для этого. Для функции размера я думал пройти через массив и увеличивать счетчик для каждого элемента, но как остановить цикл, например. for (int i = 0; i < d_array.end(); i ++), использовать .end() Мне нужно включить <array>?Динамический массив C++, push_back без STL

Спасибо за подсказки.

мой код до сих пор:

#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{ 

    } 
} 
+0

мне нужно включить ? «» отсутствует выше – fennek

+5

'int *' не является классом и не имеет функций-членов (например, 'push_back'). Вы должны сделать это сами и сами отслеживать размер. И 'std :: array' не является динамическим. – chris

+0

@fennek Ни в массивах, ни указатели не имеют функций-членов. Таким образом, вы не можете использовать push_back или размер с указателями или массивами. –

ответ

2

Вы задаете неправильный вопрос. Вы пытаетесь решить вопрос

Как я могу найти длину динамически выделяемый массива, учитывая только указатель на его начало

, которая не имеет решения в общем —, но вопрос, который вы на самом деле нужно решить

Как создать структуру данных, которая содержит динамически распределенный массив, чтобы я мог получить размер массива?

, которая имеет очень простое решение, как только вы перестанете получать вешали на вопрос вы фокусирования на ....

+1

Это хороший совет. Но это скорее комментарий, так как он действительно не отвечает на вопрос. –

Смежные вопросы