我想存储此结构所代表的链表中每个项目的地址:
struct Node
{
int data;
Node* next;
};
我为此做了一个无序的设置:
unordered_set<Node*> h;
我将迭代器定义为
unordered_set <Node*>::iterator got = h.find (&headB);
这自然会引发很多编译错误。在论坛上阅读,我意识到这是错误的,因为Node不是标准数据类型,这个迭代器无法工作。阅读更多,我还看到了我还需要为此实现定义运算符的地方。我在Stack Overflow上搜索了很多,但没有找到任何回答这个问题的东西。
基本上,我只是想知道如何使struct与任何STL容器和迭代器一起工作:我们如何定义容器和实现算法(插入,搜索,删除它们)
答案 0 :(得分:0)
您正在插入和查找错误。
您的元素属于Node*
类型。
在您的元素之前,您有一个“地址”运算符(&
)。这意味着您正在尝试添加Node**
,这是不正确的类型。
所以编译器说:
prog.cpp:67:24: error: no matching function for call to ‘std::unordered_set<Node*>::insert(Node**)’
正确的方法是通过删除运算符的地址(Node*
)来添加正确类型的元素&
;
除非您想要指针的地址,否则您需要容器来存储Node**