C++ 初始化std::pair<;双精度,标准::数组<;std::pair<;双倍,双倍>;,3>&燃气轮机;

C++ 初始化std::pair<;双精度,标准::数组<;std::pair<;双倍,双倍>;,3>&燃气轮机;,c++,std-pair,stdarray,C++,Std Pair,Stdarray,下面代码中的std::vector::push_back调用中的std::make_pair调用的正确语法有何建议 #include <array> #include <vector> #include <utility> int main() { typedef std::pair<double, double> PairType; std::vector<std::pair<double, std::array&l

下面代码中的std::vector::push_back调用中的std::make_pair调用的正确语法有何建议

#include <array>
#include <vector>
#include <utility>

int main()
{
    typedef std::pair<double, double> PairType;
    std::vector<std::pair<double, std::array<PairType, 3> > > myVector;

    double Key = 0.0;
    PairType Pair1 = std::make_pair(1.0, 2.0);
    PairType Pair2 = std::make_pair(3.0, 4.0);
    PairType Pair3 = std::make_pair(5.0, 6.0);

    myVector.push_back(std::make_pair(Key, { Pair1, Pair2, Pair3 } )); // Syntax Error

    return 0;
}
#包括
#包括
#包括
int main()
{
typedef std::PairType对;
std::vector myVector;
双键=0.0;
pairtypepair1=std::make_pair(1.0,2.0);
PairType Pair2=std::make_pair(3.0,4.0);
pairtypepair3=std::make_pair(5.0,6.0);
myVector.push_back(std::make_pair(Key,{Pair1,Pair2,Pair3}));//语法错误
返回0;
}

编译器(MS VS2015.2)无法确定std::make_pair调用中第二个参数的类型,这是可以理解的,但我不知道如何启发它。

编译器似乎无法确定
{Pair1,Pair2,Pair3}
是一个由三对组成的
std::array
。显式指定类型应该有效:

myVector.push_back(std::make_pair(Key, std::array<PairType,3>{ Pair1, Pair2, Pair3 } ));
myVector.push_back(std::make_pair(Key,std::array{Pair1,Pair2,Pair3}));

如果编译器支持,您可以使用:


不需要配对的注释的可能重复:
myVector.push_back({Key,{Pair1,Pair2,Pair3})
或者只写
make_array
,因为它没有那么长。@Yakk使用std::experimental::make_array使用
?当然可以。不,如果没有,请编写实现。这是一个简短的函数。
using std::experimental::make_array;
myVector.push_back(std::make_pair(Key, make_array(Pair1, Pair2, Pair3) ));