【发布时间】:2021-01-09 11:58:57
【问题描述】:
我需要定义一个无序的多重映射,它包含一个 int 类型的键和一个“nod”类型的值。
点头.h
#pragma once
#include <iostream>
struct nod {
int stare[100], pathManhattan, depth;
nod* nodParinte;
char actiune;
nod();
void Citire(int n);
void Init();
};
Nod.cpp
#include "Nod.h"
#include "ConsoleApplication1.cpp"
nod::nod()
{
pathManhattan = 0;
depth = 0;
nodParinte = NULL;
}
void nod::Citire(int n)
{
for (int i = 0; i < n*n; i++)
{
std::cin >> stare[i];
}
}
void nod::Init()
{
theExplored.insert({ pathManhattan + depth, this });
}
问题在于初始化函数。我不知道如何使它工作。 ConsoleApplication1.cpp
#include <iostream>
#include <string>
#include <unordered_map>
#include "Nod.h"
std::unordered_multimap<int, nod> theExplored;
std::unordered_multimap<int, nod> theFrontier;
int main()
{
return 0;
}
在我看来它应该可以工作,因为每个 nod 都会有一个 init 函数插入它在 theExplored 中使用的节点,但我想我可能没有正确理解 unordered_multimap。
我的逻辑有问题吗?如果是这样,我应该如何创建一个哈希表(AFAIK unordered_multimap 基本上是一个哈希表),键为 int 和类型为 nod 的值?
另外,如何在结构中创建一个函数,以便将节点插入到哈希表中?
谢谢。
【问题讨论】:
-
在 C++ 中,指针和对象是不同的东西。您查看错误消息了吗?
-
this不是nod,而是nod * -
@MarcGlisse 是的。我试过用“nod”代替“this”,但还是不行。
-
为什么你是 #include
.cpp文件?你应该只是 #include.hfiles -
@Galik 这就是我认为我能够从 consoleapplication1.cpp 访问 Frontier 的方式。还有其他方法吗?
标签: c++