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

时间:2013-12-13 14:25:16

标签: c++ arrays map

我正在为我的算法类实现抽象数据类型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是_capacity _brojE是_numOfElements TipKljuca是TypeOfKey TipVrijednosti是TypeOfValue 方法: obrisi是空的/删除(2个版本)

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

1 个答案:

答案 0 :(得分:0)

您可以使用_capacity

进行分配
_capacity = rhs._capacity;
_numOfElements = rhs._numOfElements;

_arrayK = new TypeOfKey[_capacity];
_arrayV = new TypeOfValue[_capacity];

在此处使用_numOfElements

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

作为循环边界。所以这两个可能不匹配,如果_numOfElements&gt;你正在超出数组边界。 _capacity