Enviado em 22/07/2021 - 17:34h
Estou construindo um código em C++ que é capaz de manipular um grafo e fazer algumas operações com esse grafo. Após codificar a classe "Grafo", no entanto, toda vez que tento instanciar um novo objeto a partir dessa classe, o depurador emite uma mensagem de erro de violação de acesso a leitura, dizendo que "MyLast" era 0x8 no arquivo vector. Eu não consigo entender bem o que esse erro quer dizer e muito menos o que está causando esse erro, pois aos meus olhos de leigo parece que eu não fiz nada de errado. Vou postar as partes do código que interessa aqui em baixo:#include <string>
#include <cstdlib>
#include <stdlib.h>
#include <cstring>
#include <vector>
#include <fstream>
#include <iostream>
using namespace std;
typedef struct
{
std::vector <int>* caminho;
std::vector <int>* distancia;
}distanciaCaminho;
class DadosDoArquivo
{
public:
int origem;
int destino;
int valor;
};
class Vertice
{
public:
unsigned int id = 0;
std::vector <int>* Antecessores;
std::vector <int>* Sucessores;
std::vector <int>* Adjacentes;
bool EscolhaGulosa = false;
/*std::string cor = "branco";
long int distanciaOrigem = NULL;*/
};
class Grafo
{
private:
void RealocarMatriz(unsigned int novoTamanho);
void CriaVertice(int vertice);
public:
std::string Direcionado;
int QuantidadeDeVertices = 0;
std::vector<std::vector<int>>* MatrizAdjacencia;
std::vector <Vertice>* Vertices;
std::vector<int>* VerticesAdicionados;
bool VerticePreDefinidos;
int QuantidadeDeArestas = 0;
int MaxFluxo;
Grafo(std::string Direcionado, unsigned int QuantidadeDeVertices, unsigned int QtdArestas);
Grafo(const Grafo& grafo) {
this->Direcionado = grafo.Direcionado;
this->QuantidadeDeVertices = grafo.QuantidadeDeVertices;
std::vector<std::vector<int>>* temp = new std::vector<std::vector<int>>(grafo.MatrizAdjacencia->size(), vector <int> (grafo.MatrizAdjacencia[0].size()));
copy(grafo.MatrizAdjacencia->begin(), grafo.MatrizAdjacencia->end(), temp->begin());
this->MatrizAdjacencia = temp;
std::vector <Vertice>* temp1 = new std::vector<Vertice>(grafo.Vertices->size());
copy(grafo.Vertices->begin(), grafo.Vertices->end(), temp1->begin());
this->Vertices = temp1;
std::vector <int>* temp2 = new std::vector<int>(grafo.VerticesAdicionados->size());
copy(grafo.VerticesAdicionados->begin(), grafo.VerticesAdicionados->end(), temp2->begin());
this->VerticesAdicionados = temp2;
this->VerticePreDefinidos = grafo.VerticePreDefinidos;
this->QuantidadeDeArestas = grafo.QuantidadeDeArestas;
}
~Grafo() {};
bool checarExistenciaVertice(int vertice);
std::vector <int>* Sucessores(unsigned int vertice);
std::vector <int>* Antecessores(unsigned int vertice);
void CriaAresta(int origem, int destino, int valor);
distanciaCaminho* MenorCaminhoDijkstra(int origem, int destino);
Grafo* FordFulkerson(int origem, int destino);
};
bool checkValoresValidos(std::string valoresValidos, char valores[]);
std::vector <std::string> splitString(std::string str, const char* op);
std::vector<std::vector<int>>* LerArquivo(std::string arqName);
Grafo::Grafo(std::string Direcionado, unsigned int QuantidadeDeVertices, unsigned int QtdArestas)
{
this->Direcionado = Direcionado;
this->QuantidadeDeVertices = QuantidadeDeVertices;
this->QuantidadeDeArestas = QtdArestas;
if (this->QuantidadeDeVertices != 0) {
this->MatrizAdjacencia->resize(this->QuantidadeDeVertices, vector<int>(this->QuantidadeDeVertices, 0));
this->VerticePreDefinidos = true;
}
else
{
this->MatrizAdjacencia->resize(1, vector<int>(1, 0));
this->VerticesAdicionados->resize(10, 0);
this->VerticePreDefinidos = false;
}
this->Vertices->resize(this->MatrizAdjacencia->size());
}
Atualizar o macOS no Mac - Opencore Legacy Patcher
Crie alias para as tarefas que possuam longas linhas de comando - bash e zsh
Criando um gateway de internet com o Debian
Configuração básica do Conky para mostrar informações sobre a sua máquina no Desktop
Aprenda a criar músicas com Inteligência Artificial usando Suno AI
Instalando e usando o Dconf Editor, o "regedit" para Linux
Como instalar o navegador TOR no seu Linux
Instalando Zoom Client no Ubuntu 24.04 LTS
Remover por completo uma DE (5)
Encriptografa... as particoes com LUKS, o que poderia dar errado? (0)
Qual a relevancia dos valores de bogomips com os Mhz e Ghz[DUVIDA] (2)