我有以下课程
template <class T>
class Graph {
private:
std::vector < std::vector<T> > data;
public:
class Edge {
private:
T source;
T destination;
};
};
我将尝试使用以边缘为中心的方法(https://stackoverflow.com/a/2157012/1864702)对有向图进行建模。
我希望能够以下列方式构造此类的对象:
enum Country {Poland, Ukraine, Germany, USA};
typedef Graph<Country> GC;
GC gc{
{ Poland, {Ukraine, Germany} },
{ Germany, {Poland, Ukraine, USA} },
{ USA, {Poland, Ukraine, USA} }
};
类Graph的构造函数应该采用什么样的参数来允许这样的语法?
答案 0 :(得分:4)
您可以在Graph
中添加一个帮助程序类,并获取这些帮助程序结构的初始化列表:
template <class T>
class Graph {
private:
std::vector < std::vector<T> > data;
struct EdgeConstructor
{
T source;
std::vector<T> destination;
};
public:
class Edge {
private:
T source;
T destination;
};
Graph(std::initializer_list<EdgeConstructor>) {}
};