运行时错误,无法确定原因

Runtime error, unable to determine the cause

本文关键字:无法确定 运行时错误      更新时间:2023-10-16

我正在为我的算法类实现抽象数据类型Map,我们被要求使用2个数组来实现它。

我昨晚已经完成了实现,一切都很好(当我们在线发送作业时,它会使用自动测试进行测试),并且它通过了每一次测试。然后我需要使用二进制搜索来实现它,我做到了。

今天早上,当我运行代码时,它给了我一个运行时错误,我认为我的复制构造函数是原因,因为当我对它进行注释时,代码运行良好,但我的复制构造器与我的导师实现的完全一样。

这是它崩溃的代码:

    ArrayMap<string,string> m;
    string s1("Sarajevo"), s2("Zagreb");
    m[s1] = "BiH";
    m[s2] = "Hrvatska";
    {
    ArrayMap<string,string> m2(m);
    ArrayMap<string,string> m3;
    m3=m;
    m.empty(s1);
    cout << m2.numOfElements() << " ";
    cout << m2[s1] << " ";
    cout << m3.numOfElements() << " ";
    cout << m3[s1] << " ";
    }
    cout << m.numOfElements();
    cout << " '" << m[s1] << "' ";
    m.obrisi();
    cout << m.numOfElements();
    cout << " '" << m[s2] << "'";

这里是构造函数:

   ArrayMap(const NizMapa<TypeOfKey, TypeOfValue>& rhs){
   _capacity = rhs._capacity;
   _numOfElements = rhs._numOfElements;
   _arrayK = new TypeOfKey[_capacity];
   _arrayV = new TypeOfValue[_capacity];
    for(int i = 0; i<_numOfElements; i++){
        _arrayK[i] = rhs._arrayK[i];
        _arrayV[i] = rhs._arrayV[i];
    }
    }

编辑:

SSCE

  ArrayMap<string,string> m;
  string s1("Sarajevo"), s2("Zagreb");
  m[s1] = "BiH";
  m[s2] = "Hrvatska";
  ArrayMap<string,string> m2(m);
  cout << m2[s1] << " " << m2.numOfElements();
  /* When I do just this it works fine, but when combined with others it crashes the            program*/

编辑:http://pastebin.com/vXdBTs4n这是类实现:NizMapa是ArrayMap_kapacitet是_能力_brojE为_numOfElementsTipKljuca是TypeOfKeyTipVrijednosti是值类型方法:obrisi为空/删除(2个版本)

注意:这不是二进制搜索版本,而是顺序搜索版本。如果需要任何其他信息,请询问,这很重要。提前感谢!

此处使用_capacity 进行分配

_capacity = rhs._capacity;
_numOfElements = rhs._numOfElements;
_arrayK = new TypeOfKey[_capacity];
_arrayV = new TypeOfValue[_capacity];

在这里您使用_numOfElements

for(int i = 0; i<_numOfElements; i++){

作为循环边界。因此,如果_numOfElements>_capacity,这两个可能不匹配,并且您的写入超出了数组边界。