![](/img/trans.png)
[英]std::greater on a an std::pair of a double and a class
[英]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) ));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.