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与“&#39; R&#39;”相关联,而数字4与“E&#39;”相关联。我想将它们配对,然后按int
从最小到最大的值对它们进行排序,因此排序的版本应该像
"1 2 3 4 5"
"P E T E R"
我查了一些方法并提出pair
,但不完全确定如何使用它。我用错了吗?接下来我该怎么办?
答案 0 :(得分:3)
最好使用地图:
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;
答案 1 :(得分:0)
如果您有C ++ 11编译器,可以按如下方式创建地图:
std::map<int, string> pair_map;
for (int i = 0; i < 5; i++){
pair_map.emplace_back(arr[i], arr1[i]);
}
在c ++ 098中
std::map<int, string> pair_map;
for (int i = 0; i < 5; i++){
pair_map.insert(make_pair(arr[i], arr1[i]));
}