【问题标题】:Resize of NTL vector调整 NTL 向量的大小
【发布时间】:2013-12-02 00:46:35
【问题描述】:

我想在运行程序期间调整我的 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;

【问题讨论】:

  • 本文档shoup.net/ntl/doc/vector.txt 不同意您的观点。所以无论问题是什么,都不是你想的那样。一如既往,解决问题的方法是发布您的代码
  • 嗯,代码已添加。
  • 那么,错误是什么?
  • 字面意思是:“不能改变这个向量的长度”

标签: c++ ntl


【解决方案1】:

here 也解释了您的代码问题。您正在使用方法 v1(i) 来访问数组,但这是一个基于 1 的索引系统,因此您的程序中有越界访问。将v1(i) 替换为v1[i](从零开始),您的程序应该可以运行了。

【讨论】:

    猜你喜欢
    • 2021-04-09
    • 1970-01-01
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    相关资源
    最近更新 更多