Я застрял в динамических массивах. Я хочу читать 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{
}
}
мне нужно включить? «» отсутствует выше –
fennek
'int *' не является классом и не имеет функций-членов (например, 'push_back'). Вы должны сделать это сами и сами отслеживать размер. И 'std :: array' не является динамическим. – chris
@fennek Ни в массивах, ни указатели не имеют функций-членов. Таким образом, вы не можете использовать push_back или размер с указателями или массивами. –