C++ int& operator[](字符串键)函数使用链表

C++ int& operator[](string key) function using Linked List

本文关键字:函数 链表 字符串 int operator C++      更新时间:2023-10-16

对于我最近分配的一个comsci项目,我们必须使用链表实现我们自己版本的STL映射。在我们的运算符[]重载函数中,尽管我们不知道如何访问和返回"int&"。

这就是我们迄今为止尝试做的事情:

int& LLMap::operator[](string key){
    //return this->myMap.searchforNodeAddress(key)->getPairValue();

    return this->myMap.searchforNodeAddress(key)->getPairValueAddress();
}

下面是被调用的函数的实现:

PairNode* PairLinkedList::searchforNodeAddress(string desiredKey){
    PairNode* currNode = this->getPairHead();
    while (currNode != NULL){
        if (currNode->getPairKey() == desiredKey){
            return currNode;
        }
        else{
            currNode = currNode->getNext();
        }
    }
}

int PairNode::getPairValue(){
    return this->value;
}
int* PairNode::getPairValueAddress(){
    return &(this->value);
}

我们已经试图弄清楚这一点很长一段时间了,但完全被难住了,任何指向正确方向的指示或任何援助都将不胜感激。感谢

您可以取消引用地址。。。

return *myMap.searchforNodeAddress(key)->getPairValueAddress();

或更改getPairValue()。。。

int& PairNode::getPairValue()  // now returns int&

另外,STL map(小写"m")仅限于历史-你可能指的是C++标准库std::map,并且你不能用链表严格地"实现"它们:考虑到标准的性能保证,它们必然是平衡的二叉树。您可以在链表上用类似std::map接口来实现一些东西——减去这些性能特征。。。。

此外,更喜欢使用const std::string&传递函数内部不会修改的string参数:它避免了分配额外的内存和复制文本,只在函数退出后释放文本。