使用initializer_list的图<Edge> C++ - 如何在没有"Edge"字的初始化器列表中创建边缘?

ewe*_*ton 2 c++ initializer-list c++11

我的图形构造函数:

Graph(std::initializer_list<Edge> list);
Run Code Online (Sandbox Code Playgroud)

我的边缘构造函数:

Edge(int out, int in);
Run Code Online (Sandbox Code Playgroud)

我想通过以下方式创建我的图表:

Graph g = { (1,2), (3,4), (5,1), (5,3)};
Run Code Online (Sandbox Code Playgroud)

但是如果我写的话,我只想要一个成功的编译:

Graph g = { Edge(1,2), Edge(3,4), Edge(5,1), Edge(5,3)};
Run Code Online (Sandbox Code Playgroud)

如何在没有"Edge"字的情况下在initializer_list创建边缘?

Mik*_*our 6

使用{}初始化每个成员; 这将选择双参数构造函数,假设没有构造函数采用initializer_list.

Graph g = { {1,2}, {3,4}, {5,1}, {5,3} };
Run Code Online (Sandbox Code Playgroud)

但是,我发现这对一些较旧的编译器不起作用,在这种情况下,你可能不得不回到写作Edge.