我不知道如何更恰本地命名这个问题,但基本上就是这样:
我做了一对 pair<int, int> P[20000]
我正在使用 P.first
和 P.second
但是……
当我尝试输入 P.first 时,比如 cin >> P.first[i]
(我是柜台)它不让我。它在编译时调用错误。我该如何解决这个问题?
编辑:得到了我之前问题的答案,但是新问题:我正在尝试像这样对 P.second 进行降序排序
sort(P.second, P.second + x, greater<int>());
但它会导致另一个编译错误。我明白为什么会这样,但我该如何解决。基本上,假设这些对是 {{0,0}, {3,2}, {4,-1}, {5,1}}
我想要的结果是 {{3,2}, {5,1}, {0,0}, {4,-1}}
.
我该怎么做?
最佳答案
您的代码中的索引有误。
要更正它,请使用 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 );
参见 here有关 std::pair
的更多信息和 here有关 std::sort
的更多信息.
注意:您需要包含 <algorithm>
要使用的头文件 std:sort
功能。
关于c++ - 如何在 C++ 中访问对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47749293/