忘川睡着了zZ 2023-02-25 12:54 采纳率: 66.7%
浏览 10
已结题

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


class Graphs
{
    public:
        map<int,Node*>* nodes;
        set<Edge>* edges;
        Graphs()
        {
            this->nodes=new map<int,Node*>();
            this->edges=new set<Edge>();
        }
};
class Node
{
    public:
    int value;
    int out;
    int in;
    list<Node>nexts;
    list<Edge>edges;
    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;
       
   }
}
  • 写回答

2条回答 默认 最新

  • MarkHan_ 2023-02-25 13:00
    关注

    该回答引用GPTᴼᴾᴱᴺᴬᴵ
    在C++中,可以通过使用 map 容器的 operator[] 运算符来获取一个指向 map 容器中指定键值的引用。在您的代码中,您可以通过以下方式获取一个指向节点的引用:

    Node* fromNode = (*gr->nodes)[from];
    

    此代码行将从 gr->nodes 中获取键为 from 的节点,并返回对该节点的引用。

    类似地,您可以通过以下方式获取到指向 to 节点的引用:

    Node* toNode = (*gr->nodes)[to];
    

    希望这可以帮助您获取节点的引用并完成您的函数。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月25日
  • 创建了问题 2月25日

悬赏问题

  • ¥15 这个如何解决详细步骤
  • ¥15 在微信h5支付申请中,别人给钱就能用我的软件,这个的所属行业是啥?
  • ¥30 靶向捕获探针设计软件包
  • ¥15 别人给钱就能用我的软件,这个的经营场景是啥?
  • ¥15 react-diff-viewer组件,如何解决数据量过大卡顿问题
  • ¥20 遥感植被物候指数空间分布图制作
  • ¥15 安装了xlrd库但是import不了…
  • ¥20 Github上传代码没有contribution和activity记录
  • ¥20 SNETCracker
  • ¥15 数学建模大赛交通流量控制