2013-12-01 2 views
0

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

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

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; 
+2

Эта документация http://www.shoup.net/ntl/doc/vector.txt не согласна с вами. Так что какова бы ни была проблема, это не то, что вы думаете. Как всегда на SO, способ решить ваши проблемы - это ** выставить свой код **. – john

+0

Ну, код был добавлен. –

+0

Итак, какая ошибка? –

ответ

1

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

+0

сейчас, это работает..thanks :) –

Смежные вопросы