Итак, я пытаюсь поэкспериментировать с искусственной нейронной сетью или по крайней мере царапать поверхность. Но вот моя проблема, я не могу найти способ увеличить размер массива, содержащий указатели на другие «нейроны».Измените указатель массива на гораздо больший массив
Вот мой код для расширения размера моего искусственного нейрона.
void extendNeuron(NeuronPtr *base, NeuronPtr * dest) {
(*(*base)->axon[sizeof((*base)->axon)/sizeof(*(*base)->axon) - 1]) = *dest;
struct Neuron *** newAxon[sizeof((*base)->axon)/sizeof(*(*base)->axon) + 1];
memcpy(newAxon, (*base)->axon, sizeof((*base)->axon));
**(*base)->axon = ***newAxon;
}
А вот структура для моих Нейроны
struct Neuron{
char label[100];
struct Neuron **axon[1];
};
Теперь моя идея заключается в том, чтобы создать еще один массив указателей (структура Neuron ** аксон), который больше, чем текущий массив (увеличить его на 1), а затем измените указатель аксона на этот массив. Но я не знаю, как это сделать.
До сих пор вот мой код:
struct Neuron ** newAxon[sizeof((*base)->axon)/sizeof(*(*base)->axon) + 1]; //newAxon is supposed to be bigger than the axon of base
memcpy(newAxon, (*base)->axon, sizeof((*base)->axon)); //then I'm trying to copy the axon of base to the newAxon
**(*base)->axon = ***newAxon; //then change the pointer of axon to newAxon
Любая причина вы не можете использовать ['std :: vector'] (http://en.cppreference.com/w/cpp/container/vector), который может автоматически вырасти? – NathanOliver
Что вы подразумеваете под символом '[1]' в коде 'struct Neuron ** axon [1]:' Я знаю, что это означает, и я действительно сомневаюсь, что это то, что вы намереваетесь. – JSF
Ваше использование 'sizeof' также не означает, что вы хотели, чтобы это означало (я знаю, что вы хотели, а также то, что это значит, и они не совпадают). – JSF