C ++ int& operator [](字符串键)功能使用链接列表

时间:2015-10-28 03:06:33

标签: c++ operator-overloading

对于我最近被分配的comsci项目,我们必须使用链接列表实现我们自己的STL Map版本。在我们的operator []重载函数中虽然我们无法弄清楚如何访问并返回“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);
}

我们一直试图解决这个问题已经有一段时间了,并且完全被困住了,任何指向正确的方向或任何协助都会非常感激。谢谢

1 个答案:

答案 0 :(得分:2)

你可以取消引用地址......

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

...或更改getPairValue() ...

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

另外,STL map(小写" m")仅限于历史记录 - 您可能意味着C ++标准库std::map,并且您不能严格遵守#34;实施"要么是链接列表,要么是标准的性能保证,它们必然是平衡的二叉树。你可以通过链接列表实现std::map - 比如接口 - 减去那些性能特征......

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