int main(){
int arr[5] = {5,4,2,1,3 };
string arr1[5] = { "R","E","E","P","T"};
pair<int, string> pair[5];
for (int i = 0; i < 5; i++){
pair[i] = make_pair(arr[i], arr1[i]);
}
system("pause");
return 0;
}
我有 2 个数组,一个 int
数组和一个 string
数组。现在我想对这些数组进行排序。如您所见,数字 5 与“R”相关联,数字 4 与“E”相关联。我想将它们配对,然后按 int
值从小到大对它们进行排序,因此排序后的版本应该是这样的
"1 2 3 4 5"
"P E T E R"
我查阅了一些方法并提出了pair
,但并不完全确定如何使用它。我用错了吗?接下来我应该做什么?
最佳答案
最好用 map :
std::map<int, char> letters{{5, 'R'}, {4, 'E'}, {2, 'E'}, {1, 'P'}, {3, 'T'}};
for (auto& letter : letters)
std::cout << letter.second;
它根据键(在本例中为 int)排序,默认情况下按您想要的方式排序。
编辑: 你也可以使用你已经拥有的东西,像这样:
// sort array of pairs
std::sort(std::begin(pairs), std::end(pairs));
// print them out
for (auto& letterPair : pairs)
std::cout << letterPair.second;
关于c++ - 对 2 组不同的数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31039569/