
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());
}
Gentoo binário em 2026: UEFI, LUKS, Btrfs e Systemd
Trabalhando Nativamente com Logs no Linux
Jogando Daikatana (Steam) com Patch 1.3 via Luxtorpeda no Linux
LazyDocker – Interface de Usuário em Tempo Real para o Docker
Usando dracut e dispensando genkernel no Gentoo + LUKS + Btrfs
Curso GRÁTIS: OCS Inventory NG - Do Deploy ao Hardening com foco em Segurança da Informação!
Instalando fontes via script no Nautilus Scripts no Gnome do Debian 13
GLPI Não atualiza Inventario (1)
Instalar Linux em notebook Sony Vaio VPCEG13EB (3)
VirtualBox no Ubuntu 25.10 sem redimensionam... automatico. (1)









