class QPanda::Graph
#include <Graph.h>
class Graph
{
public:
// typedefs
typedef Graph* Ref;
typedef std::unique_ptr<Graph> uRef;
typedef std::shared_ptr<Graph> sRef;
// enums
enum Kind;
enum Type;
// construction
Graph(
uint32_t n,
Type ty = Undirected
);
// methods
uint32_t inDegree(uint32_t i) const;
uint32_t outDegree(uint32_t i) const;
uint32_t size() const;
std::set<uint32_t>& succ(uint32_t i);
const std::set<uint32_t>& c_succ(uint32_t i) const;
std::set<uint32_t>& pred(uint32_t i);
std::set<uint32_t> adj(uint32_t i) const;
void putEdge(
uint32_t i,
uint32_t j
);
bool hasEdge(
uint32_t i,
uint32_t j
) const;
bool isWeighted() const;
bool isArch() const;
bool isDirectedGraph() const;
std::string dotify(std::string name = "Dump") const;
static bool ClassOf(const Graph* g);
static uRef Create(
uint32_t n,
Type ty = Undirected
);
};
// direct descendants
template <typename T>
class WeightedGraph;