使用 C++ 中的 STL pair 根據另一個數組對陣列進行排序


假設我們有兩個不同的陣列。我們必須使用 C++ STL pair 類根據另一個數組對一個數組進行排序。考慮兩個陣列,例如 A1 = [2, 1, 5, 4, 9, 3, 6, 7, 10, 8],另一個數組為 A2 = [A, B, C, D, E, F, G, H, I, J],輸出將如下所示:A1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],A2 = [B, A, F, D, C, G, H, J, E, I]

在這裡,我們正在使用 C++ STL 的對。一對是透過從 A1 中取一個元素,從 A2 中取另一個元素來形成的。然後只需使用排序函式。我們考慮的一件事是該對中的第一個元素應該形成陣列,根據該陣列執行排序。

示例

 線上示例

#include <iostream>
#include <algorithm>
#include <map>
using namespace std;
template <class T>
void display(T arr[], int n) {
   for (int i = 0; i < n; i++)
   cout << arr[i] << " ";
}
void sortUsingSecondArr(int A1[], char A2[], int n){
   pair<int, char> pair_arr[n];
   for (int i = 0; i < n; i++) {
      pair_arr[i].first = A1[i];
      pair_arr[i].second = A2[i];
   }
   sort(pair_arr, pair_arr + n);
   for (int i = 0; i < n; i++) {
      A1[i] = pair_arr[i].first;
      A2[i] = pair_arr[i].second;
   }
}
int main() {
   int n = 10;
   int A1[] = {2, 1, 5, 4, 9, 3, 6, 7, 10, 8};
   char A2[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'};
   cout << "Before Sorting: "<<endl;
   cout << "First Array : "; display(A1, n);
   cout << "\nSecond Array: "; display(A2, n);
   sortUsingSecondArr(A1, A2, n);
   cout << "\n\nAfter Sorting: "<<endl;
   cout << "First Array : "; display(A1, n);
   cout << "\nSecond Array: "; display(A2, n);
}

輸出

Before Sorting:
First Array : 2 1 5 4 9 3 6 7 10 8
Second Array: A B C D E F G H I J
After Sorting:
First Array : 1 2 3 4 5 6 7 8 9 10
Second Array: B A F D C G H J E I

更新於:2019 年 10 月 21 日

759 瀏覽次數

開啟你的 職業生涯

完成課程,獲得認證

開始吧
廣告
© . All rights reserved.