Изменение размера вектора NTL

Я хотел бы изменить свой вектор ZZ во время работы программы. Есть ли способ, как это сделать? Я нашел методы .setLenght () в качестве альтернативы .DosetLenght (), но это похоже только на шаг инициализации, потому что мой pro / gram отказывается изменять вектор с помощью этих методов.

Большое спасибо.

 Vec<ZZ> v1,v2;
v1.SetLength(8);
v2.SetLength(8);
ZZ velkeCislo,odmocnina,factor,test;
long i = 0;
cin >> velkeCislo;
odmocnina = SqrRoot(velkeCislo);
cout << "new v1 dlzka " << v1.length() << endl;
for(i=0;i<v1.length();i++) {
v1(i) = odmocnina;
odmocnina++;
cout << "Number1 " << v1(i) << endl;
}
for(i=0;i<v1.length();i++){
v2(i)=(v1(i)*v1(i))-velkeCislo;
cout << "Number2 " << v2(i) << endl;
}
bool found=false;
int tp = v1.length();
cout << "old v1 " << v1.length() << endl;
v1.SetLength(tp+1); //causes error
cout << "new v1 " << v1.length() << endl;

0

Решение

Проблема с вашим кодом также объясняется Вот. Вы используете метод v1(i) чтобы получить доступ к массиву, но это система индексации на основе 1, так что у вас есть доступ за пределы вашей программы. замещать v1(i) с v1[i] (который начинается с нуля) и ваша программа должна работать.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]