c++ - 如何在 C++ 中访问对?

标签 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>());

但它会导致另一个编译错误。我明白为什么会这样,但我该如何解决。基本上,假设这些对是 {{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功能。

Visit here to see an working example .

关于c++ - 如何在 C++ 中访问对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47749293/

相关文章:

C++ - 从没有自定义 .lib 文件的 Lua C 模块调用 Lua 函数

c++ - 在C++中读取输入

c++ - 插入自定义类以映射为值时出错

c++ - 全局文本段外的链接器错误

c++ - 如何使用 C++ 将字符串附加到 HDF5 数据集?

C++: 对< vector <整数>, vector <整数>> p;

c++ - 如何在 C++ 中存储一对数字?

c++ - 对大量对进行排序

c++ - glGenVertexArrays 和 glGenBuffers 参数

c++ - 比较具有替代顺序的自定义类型的 std::tuple(或 std::pair)。是否可以插入自定义小于/比较函数?