Мой алгоритм C++ получает данные с неизвестным размером (он обнаруживает частицы на изображении одну за другой, и я не могу знать, сколько частиц будет обнаружено до того, как этот алгоритм завершит свою работу). Итак, сначала я хочу выделить, скажем, массив из 10 000 элементов, а в процессе обработки, при необходимости, несколько раз выделить еще 10 000 элементов.
Вот что я пробовал, это не работает:
#include <iostream>
using namespace std;
int main(){
int n = 3;
int m = 3;
float *a = new float[3];
a[0] = 0;
a[1] = 1;
a[2] = 2;
float *b = a + 2;
b = new float[3];
b[0] = 4;
b[1] = 5;
cout << a[3] << endl;
}
В итоге получил минус бесконечность. Конечно, я могу справиться с этим в разных массивах, могу один раз выделить огромное количество памяти. Мне нужно передать в функцию полный массив обнаруженных данных после, поэтому в результате я хочу иметь один большой массив.
Но все же, есть ли способ увеличить размер вашего динамически выделяемого пути? В примере с игрушкой я хочу увеличить количество элементов в массиве a
на 3, чтобы в нем было 6
элементов.
В Матлабе это абсолютно возможно. Что насчет С++?
Спасибо
std::vector
для этой цели - вам не нужно беспокоиться о выделении памяти. - person Charles Salvia   schedule 12.03.2015