簡體   English   中英

初始化std :: pair <double,std :: array <std :: pair <double,double>,3 >>

[英]Initialising std::pair<double, std::array<std::pair<double, double>, 3> >

任何人都可以在下面的代碼中為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調用中第二個參數的類型,這是可以理解的,但我不知道如何啟發它。

看起來編譯器無法弄清楚{ Pair1, Pair2, Pair3 }是三對的std::array 明確指定類型應該有效:

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

演示。

如果編譯器支持庫基礎知識v2 ,您可以使用std :: experimental :: make_array

using std::experimental::make_array;
myVector.push_back(std::make_pair(Key, make_array(Pair1, Pair2, Pair3) ));

來自GCC的現場直播

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM