c++ - 对 2 组不同的数组进行排序

标签 c++ arrays sorting

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/

相关文章:

c++ - 是否存在与平台无关的C++ fork 过程(例如某些标准库)?如何使我的代码可移植?

c++ - 为没有明显结束的容器实现迭代器是否有意义 - 例如树?

java - Android (Java) 将 JSONArray 转换为 JSONObject

javascript - 查找数组中大于右侧所有元素的整数

c++ - 如何将对象放置在堆以外的其他地方?

java - 在 Java 中使用数组求最小值、最大值和平均值

javascript - 遇到未捕获的类型错误 : Cannot read property of undefined

c++ - 尝试对 C++ 中的数字列表进行排序

ruby - Ruby 中的数组排序

c++ - 如何在Flex中读取标识符 'class'?