gpt4 book ai didi

c++ - 调试 vector 检索?

转载 作者:行者123 更新时间:2023-11-28 03:45:38 26 4
gpt4 key购买 nike

这几乎是 debugging a map insertion 的跟进,我应用了那里的建议,但现在需要更多的指示,我对此感到非常困惑:

#include <stdio.h>
#include <vector>
#include <stack>
#include <map>

using namespace std;

class Nodo
{
public:
vector<Nodo*> Relaciones;
int Valor;
bool Visitado;

Nodo(int V)
{
Valor = V;
Visitado = false;
}

Nodo()
{
Visitado = false;
}
};

class Grafo
{
public:
Nodo *Raiz;
map<int, Nodo*> Nodos;

Grafo(int V)
{
Raiz = new Nodo(V);
Nodos.insert(pair<int, Nodo*>(V, Raiz));
}

void Insertar(int _1, int _2)
{
Nodo *Fuente = Nodos[_1];
Nodo *Destino = new Nodo(_2);
Nodos.insert(pair<int, Nodo>(_2, Destino));
Fuente->Relaciones.push_back(Destino);
Destino->Relaciones.push_back(Fuente);
}

pair<int, Nodo> Resultado;
void DFS(Nodo Fuente)
{
stack<pair<int, Nodo>> St;
St.push(pair<int, Nodo>(0, Fuente));
Fuente.Visitado = true;
while(!St.empty())
{
pair<int, Nodo> P = St.top();
int Dist = P.first;
Nodo N = P.second;
St.pop();
if(Dist < Resultado.first)
{
Resultado.first = Dist;
Resultado.second = N;
}
for(int i = 0; i < N.Relaciones.size(); i++)
{
//Getting error C2664: 'Nodo::Nodo(int)' : cannot convert parameter 1 from 'Nodo *' to 'int' here
Nodo *I = N.Relaciones[i];
if(!I->Visitado)
{
I->Visitado = true;
St.push(pair<int, Nodo>(Dist + 1, I));
}
}
}
}

int Procesar()
{
DFS(*Raiz);
Resultado.first = 0;
DFS(Resultado.second);
return Resultado.first;
}
};

int main()
{
Grafo* G;
int Nodos = 0;
scanf("%d", &Nodos);
int _1, _2 = 0;
scanf("%d", &_1);
scanf("%d", &_2);
G = new Grafo(_1);
G->Insertar(_1, _2);
Nodos--;
while(Nodos - 1 > 0)
{
scanf("%d", &_1);
scanf("%d", &_2);
G->Insertar(_1, _2);
Nodos--;
}
printf("%d" + G->Procesar());
system("PAUSE");
}

它不应该按原样工作吗?我将 I 声明为指向 Nodo 的指针,[] 运算符就是为了给我一个 Nodo指针。

如果它很重要,我使用的是配置为无字符集的 Visual Studio 2011。

最佳答案

由于 map 使用的是指针,所以需要插入一对带指针的,全部改

pair<int, Nodo>

pair<int, Nodo*>

关于c++ - 调试 vector 检索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7780409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com