class Graphs
{
public:
map<int,Node*>* nodes;
set* edges;
Graphs()
{
this->nodes=new map<int,Node*>();
this->edges=new set();
}
};
class Node
{
public:
int value;
int out;
int in;
listnexts;
listedges;
Node(int v)
{
this-> value=v;
out=0;
in=0;
}
};
class Edge
{
public:
int weight;
Node* from;
Node* to;
Edge(int w ,Node* f ,Node* t)
{
weight=w ;
from=f ;
to=t ;
}
};
void createGraph(int num[][3],int len)
{
Graphs* gr=new Graphs();
for(int i = 0;i < len;i++) {
int res=num[i][0];
int from=num[i][1];
int to=num[i][2];
if(gr->nodes->find(from)==gr->nodes->end())
{
gr->nodes->insert(pair<int,Node*>(from,new Node(from)));
}
if(gr->nodes->find(to)==gr->nodes->end())
{
gr->nodes->insert(pair<int,Node*>(to,new Node(to)));
}
Node* fromNode=*(gr->nodes->find(from)).second;
}
}
该回答引用GPTᴼᴾᴱᴺᴬᴵ
在C++中,可以通过使用 map 容器的 operator[] 运算符来获取一个指向 map 容器中指定键值的引用。在您的代码中,您可以通过以下方式获取一个指向节点的引用:
Node* fromNode = (*gr->nodes)[from];
此代码行将从 gr->nodes 中获取键为 from 的节点,并返回对该节点的引用。
类似地,您可以通过以下方式获取到指向 to 节点的引用:
Node* toNode = (*gr->nodes)[to];
希望这可以帮助您获取节点的引用并完成您的函数。
该回答引用ChatGPT
在C++中,可以通过以下方式从map容器中获取值:
auto it = map_container.find(key);
if (it != map_container.end()) {
Node* value = it->second;
// 对value执行需要的操作
} else {
// key不存在
}
在给定的代码中,要从map容器中获取值,可以按照以下步骤操作:
通过键从map容器中查找节点。
auto it = gr->nodes->find(from);
检查查找是否成功,如果成功则获取节点的值。
if (it != gr->nodes->end()) {
Node* fromNode = it->second;
// 对fromNode执行需要的操作
} else {
// 键不存在
}
同样的,可以使用类似的方法从map容器中获取其他值。需要注意的是,要获取的值的类型必须与容器的值类型相同。