调整NTL向量的大小

时间:2013-12-01 15:28:48

标签: c++ 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;

1 个答案:

答案 0 :(得分:1)

还解释了代码的问题here。您正在使用方法v1(i)来访问数组,但这是一个基于1的索引系统,因此您在程序中有超出范围的访问权限。将v1(i)替换为v1[i](从零开始),您的程序应该有效。