C++ int& operator[](字符串键)函数使用链表
C++ int& operator[](string key) function using Linked List
对于我最近分配的一个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
参数:它避免了分配额外的内存和复制文本,只在函数退出后释放文本。
相关文章:
- 链表,反向函数,数据结构
- 链表的泛型函数remove()与成员函数remove)
- 链表中的 C++ 析构函数
- 为什么我的双向链表删除函数会删除多个节点?
- 在 c++ 中具有向量的双向链表构造函数
- C++析构函数被意外调用双链表
- 修改链表主函数代码,用户将在其中输入节点的索引和数据以及正确的消息
- 双链表的擦除值函数,未知错误
- 使用函数引用指向节点的指针删除链表中的节点?
- 使用析构函数释放链表
- 为什么将函数的返回类型从结构节点*更改为void后,链表的元素没有显示create_ll和显示?
- 指针永远不会在链表深层复制构造函数中达到 null
- 程序在为链表创建推送函数时崩溃
- C++嵌套的迭代器类(在链表类中)Insert_After函数
- 合并 2 个排序的链表。必需的成员函数 bool Merge(List342 &list1):
- 双链表堆栈删除函数不起作用
- 这是在传递 int num 时创建搜索函数的正确方法吗?使用链表库
- 复制链表的构造函数
- 将链表传递给函数并确保它未被修改
- C++弹出函数链表