📄 qydirectedgraph.h
字号:
// ____________________________________________________________________________//// General Information://// File Name: QYDirectedGraph.h// Author: Yan Qi// Project: KShortestPath//// Description: Declaration of class(es) CQYDirectedGraph//// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// Revision History://// 11/21/2006 Yan Initial Version//// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// Copyright Notice://// Copyright (c) 2006 Your Company Inc.//// Warning: This computer program is protected by copyright law and // international treaties. Unauthorized reproduction or distribution// of this program, or any portion of it, may result in severe civil and// criminal penalties, and will be prosecuted to the maximum extent // possible under the law.//// ____________________________________________________________________________#ifndef _QYDIRECTEDGRAPH_H_#define _QYDIRECTEDGRAPH_H_#include "QYConfigCenter.h"#include <string>namespace asu_emit_qyan{ // ____________________________________________________________________________ // // Class: CQYDirectedGraph // // Purpose: CQYDirectedGraph defines the directed graph with a list of // directed edges, associated with its weight. // // Notes: Two ways to construct a graph: // 1. Assign the path of the file recording the graph // 2. Transfer an existing object. // // See Also: // // ____________________________________________________________________________ class CQYDirectedGraph { public: const static double DISCONNECT; const static int DEADEND; // CQYDirectedGraph(){_Init();} CQYDirectedGraph(int n){m_nNumberOfVertices = n; _Init();} CQYDirectedGraph(const std::string& input_file_name); virtual ~CQYDirectedGraph(); void InsertPair(int i, int j, double w); CQYDirectedGraph(const CQYDirectedGraph& rGraph); CQYDirectedGraph& operator=(const CQYDirectedGraph& rGraph); // The methods below play the persistent role. void PrintOut(const std::string& out_file_name); void PrintOut(std::ostream& out_stream); void PrintOutAllEdges(std::ostream& os); void RemoveEdge(int i, int j); void AddEdge(int i, int j, double weight); // Getter and setter int GetNumberOfVertices() const { return m_nNumberOfVertices; } void SetNumberOfVertices(int val) { m_nNumberOfVertices = val; } int GetNumberOfEdges() const { return m_nNumberOfEdges; } void SetNumberOfEdges(int val) { m_nNumberOfEdges = val; } double GetMaxWeight() const { return m_dMaxWeight; } void SetMaxWeight(double val) { m_dMaxWeight = val; } double GetMinWeight() const { return m_dMinWeight; } void SetMinWeight(double val) { m_dMinWeight = val; } double GetWeight(int i, int j) const { return m_pDirectedEdges->count(std::pair<int, int>(i,j)) ? (*m_pDirectedEdges)[std::pair<int, int>(i,j)] : DISCONNECT; } void SetWeight(int i, int j, double val) { (*m_pDirectedEdges)[std::pair<int, int>(i,j)] = val; } private: CQYConfigCenter::IntPair_Double_Map* m_pDirectedEdges; int m_nNumberOfVertices; int m_nNumberOfEdges; double m_dMaxWeight; double m_dMinWeight; void _Init(); };}#endif //_QYDIRECTEDGRAPH_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -