gpt4 book ai didi

c++ - 如何在 C++ 中的映射中存储地址?

转载 作者:行者123 更新时间:2023-12-02 09:47:54 25 4
gpt4 key购买 nike

我试图找到两个链表之间的交点。我已经知道如何通过计算两个列表的长度绝对差并替换其中一个指针来解决问题。

我想知道是否可以通过存储每个节点的地址以及 map 中的访问计数来解决问题, map 存储节点被访问的次数。

int findMergeNode(SinglyLinkedListNode* head1, SinglyLinkedListNode* head2) {
map<int,int>m1;
//map<int*,int>m1 ??
//map<address,int>m1??
SinglyLinkedListNode *temp = head1;
while(temp!=nullptr) {
m1[temp]++;
temp = temp->next;
}
temp = head2;
while(temp!=nullptr) {
m1[temp]++;
temp = temp->next;
}
for(auto it=m1.begin();it!=m1.end();it++) {
if(it->second > 1) {
temp = it->first;
return temp->data;
}
}
return 0;
}

最佳答案

map<SinglyLinkedListNode *, int> m1;

会成功的。对于每个指向 SinglyLinkedListNode 的指针,您保留一个数字,即访问次数。

你可以做得更好:

map<const SinglyLinkedListNode *, int> m1;

如果您不需要按顺序遍历指针,另一种选择是:

unordered_map<const SinglyLinkedListNode *, int> m1;

有些人可能会声称这样更好,因为指针没有有用的顺序。

关于c++ - 如何在 C++ 中的映射中存储地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63566186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com