Computer >> Máy Tính >  >> Lập trình >> C ++

Sắp xếp một mảng theo một mảng khác bằng cách sử dụng cặp trong STL trong C ++

Giả sử chúng ta có hai mảng khác nhau. Chúng ta phải sắp xếp một mảng dựa trên mảng kia bằng cách sử dụng lớp cặp STL C ++. Hãy xem xét hai mảng giống như A1 =[2, 1, 5, 4, 9, 3, 6, 7, 10, 8] và một mảng khác giống như A2 =[A, B, C, D, E, F, G , H, I, J], Đầu ra sẽ như sau:A1 =[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], A2 =[B, A, F, D, C , G, H, J, E, I]

Ở đây chúng tôi đang sử dụng các cặp C ++ STL. Cặp được hình thành bằng cách lấy một phần tử từ A1, một phần tử khác từ A2. Sau đó, chỉ cần sử dụng chức năng sắp xếp. Một điều chúng tôi đã xem xét, rằng phần tử đầu tiên trong cặp, sẽ tạo thành mảng, theo đó việc sắp xếp được thực hiện.

Ví dụ

#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);
}

Đầu ra

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