отсортировать хэш-карту в c ++ с помощью ключа. невозможно отсортировать - PullRequest
0 голосов
/ 21 июня 2020
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int flag=0;
    int T,i;
    cin>>T;
    while(T--)
    {
        unordered_map<int,int>h;
        long int n;
        cin>>n;
        long int arr[n];
        for(i=0;i<n;i++)
        {
            cin>>arr[i];
        }
        sort(arr, arr+n);
        for(i=0;i<n;i++)
        {
            if(arr[i]>0)
            h[arr[i]]=0;
        }
        for(i=0;i<n;i++)
        {
            if(arr[i]<0 && h.find((-1)*(arr[i]))!=h.end())
            {
                h[(-1)*(arr[i])]=arr[i];
                flag=1;

            }
        }

        for(auto x=h.begin(); x!=h.end(); x++)
        {
            if(x->second!=0)
            {
                cout<<x->first<<" "<<x->second<<" ";
            }
        }
        if(flag==0)
        {
            cout<<0;
        }
        cout<<endl;

    }

} 

Данный массив arr [] из N пар положительных и отрицательных целых чисел может быть не в отсортированном порядке. Задача состоит в том, чтобы соединить положительные и отрицательные элементы таким образом, чтобы положительный элемент сочетался с отрицательным элементом того же абсолютного значения. Если элемент пары отсутствует для элемента, игнорируйте его. Вывод должен содержать все пары в порядке возрастания абсолютных значений. Чтобы напечатать пару, положительное значение должно быть напечатано перед соответствующим отрицательным значением. Примечание: элементы в массиве различны. входной массив = 1, 3, 6, -2, -1, -3, 2,7 выход: 1 -1 2 -2 3-3

мой код не работает в тестовом примере input array = - 1-2-5-6 1 3 4 2 5 6 ожидаемый результат = 1-1 2 -2 5-5 6-6 мой результат = 6-6 5-5 1-2-2 где я делаю не так

1 Ответ

1 голос
/ 21 июня 2020

Чтобы получить отсортированную карту, используя std::map, вы получите результат. Если вы хотите иметь собственную функцию сортировки, используйте структуру-оболочку с перегруженным оператором () и помните, что алгоритм c, специфичный для контейнера, лучше, чем стандартный c.

...