graph.hpp (1121B)
1 #pragma once 2 3 #include "edge.hpp" 4 #include "vertex.hpp" 5 #include <cstddef> 6 #include <cstdint> 7 #include <random> 8 #include <string> 9 #include <vector> 10 11 class Graph { 12 private: 13 std::vector<std::vector<Edge>> edges{}; 14 std::vector<Vertex> vertices {}; 15 std::vector<Vertex*> verticesToRender {}; // these point to 16 std::vector<Edge*> edgesToRender {}; // elements in the other vectors. 17 // past init, vertices and edges don't vary 18 19 public: 20 // based on the edgeCount and vertCount, random edges and vertices will be 21 // created. 22 Graph(std::size_t edgeCount, std::size_t vertCount, uint32_t xMax, 23 uint32_t yMax, std::uint32_t seed = std::random_device{}()); 24 std::string toString() noexcept; 25 void render() noexcept; 26 void renderUnrenderedTraversed() noexcept; 27 void traverseVertexIdx(std::size_t idx); 28 std::vector<Edge> getEdgesOfVertexIdx(std::size_t idx); 29 std::vector<Edge>* getEdgesWithUnvisitedVertices(std::size_t idx); 30 void setEdgeTraversed(Edge e); 31 Vertex getVertex(std::size_t idx); 32 std::size_t getVertexCount() const noexcept; 33 };