如何在C++中访问对?

Ast*_*ria 0 c++ std-pair

我不知道如何更恰当地命名这个问题,但基本上就是这样:

我做了一对pair<int, int> P[20000]和我使用P.firstP.second,但...

当我尝试输入P.first时,就像cin >> P.first[i](我是计数器)一样,它不会让我.它在编译时调用错误.我该如何解决?

编辑:得到了我之前的问题的答案,但新的问题:我正试图在P.second上运行降序排序

sort(P.second, P.second + x, greater<int>());
Run Code Online (Sandbox Code Playgroud)

但它会导致另一个编译错误.我理解为什么会这样,但我该如何解决它.基本上,说对是{{0,0}, {3,2}, {4,-1}, {5,1}}我想要的结果是{{3,2}, {5,1}, {0,0}, {4,-1}}.

我该怎么做呢?

cse*_*cse 10

您的代码中的索引编写错误.
cin>>P[i].first而不是cin>>P.first[i]

std:sort使用以下内容:

using Pair = std::pair<int, int>;
auto&& comparator =  [](const Pair& lhs, const Pair& rhs){ return lhs.second > rhs.second;};
std::sort( P, P + 20000, comparator );
Run Code Online (Sandbox Code Playgroud)

这里有关的更多信息std::pair,并在这里有关的更多信息std::sort