【问题标题】:"MyString" values do not cout correctly“MyString”值不能正确计算
【发布时间】:2019-04-10 04:18:35
【问题描述】:

我创建了一个 myString 类,我在其中重载了运算符以用于我的哈希表。我有以下问题: 在我的打印功能中,计算值有效,但计算密钥无效。而是打印随机字符。

我不想在这个程序中使用节点。

void hashTable::print(){
    int i;
    cout<<"-------hash table-------"<<endl;
    cout<<"index    key       value"<<endl;
    MyString key=data[i].getKey();
    int value=data[i].getValue();
    for(i=0;i<length;i++){
        cout<<"     "<<i;
        cout<<"     "<<key;
        cout<<"        "<<value;
        }
    cout<<endl;
}

【问题讨论】:

  • 你能把它缩小到复制一个问题所需的最少代码量吗?一旦我们解决了一个问题,如果您还有其他问题,您可以提出另一个问题。主要问题是您的字符串类不打印还是您的哈希表不起作用?通读minimal reproducible example 并努力清理一下。
  • 当然,我已经清理过了。
  • 什么是MyString?我们至少需要为它定义operator&lt;&lt;

标签: c++ data-structures hashtable


【解决方案1】:

在您的代码中,您在开始时仅使用 i 设置了一次 keyvalue,因为它尚未初始化,因此具有不确定的值。您需要使用正确的i每次 迭代您的元素。

void hashTable::print() {
    cout << "-------hash table-------" << endl;
    cout << "index    key       value" << endl;

    for(int i = 0; i < length; i++) {
        MyString key = data[i].getKey();
        int value = data[i].getValue();
        cout << "     " << i;
        cout << "     " << key;
        cout << "        " << value;
    }

    cout << endl;
}

不确定这是否完全解决了您的问题,但它仍然会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多