Первый цикл for(int i=0; i<d; i++)
, вероятно, должен быть for(int i=0; i<pop; i++)
. В противном случае вы резервируете место только для 12 элементов, но позже попытаетесь получить доступ к 50.
Обратите внимание, что наличие необработанных членов-указателей считается очень плохой идеей в современном C ++, потому что вам нужно беспокоиться о копировании семантики. Лучше использовать плоскую std::vector<float>
и выполнить 2D-1D-отображение вручную или использовать std::vector<std::vector<float> >
с удобным синтаксисом доступа.
Я бы предпочел вторую версию. Не видя больше контекста:
pop = 50;
d = 12;
uye = std::vector<std::vector<float> >(pop, std::vector<float>(d));
Последовательность вложенных циклов работает точно так же, никаких изменений не требуется.