二维数组转图的函数,怎么根据key获取到map容器的value


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容器中获取其他值。需要注意的是,要获取的值的类型必须与容器的值类型相同。