初始化std :: pair <double,std :: array <std :: pair <double,=“”double =“”>,3&gt; &GT;

时间:2016-10-12 09:38:44

标签: 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<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;
}

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

2 个答案:

答案 0 :(得分:3)

看起来编译器无法确定{ Pair1, Pair2, Pair3 }是三对中的std::array。明确指定类型应该有效:

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

Demo.

答案 1 :(得分:3)

如果编译器支持MSDN

,您可以使用std::experimental::make_array
df[] <- lapply(df, strrep,2)
df
#   X  Y
#r1 AA DD
#r2 BB EE
#r3 CC FF

Library fundamentals v2