使用 Key 对 C++ 中的哈希映射进行排序. 无法排序

sort a hashmap in c++ using key. unable to sort

本文关键字:排序 映射 哈希 Key C++ 使用      更新时间:2023-10-16
#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;
}
} 

给定一个由 N 个正整数和负整数对组成的数组 arr[],可能不按排序顺序排列。任务是将正元素和负元素配对,使正元素与具有相同绝对值的负元素配对。如果元素不存在配对元素,则忽略它。输出应按绝对值的递增顺序包含所有对。要打印一对,应在相应的负值之前打印正值。注意:数组中的元素是不同的。输入数组 =

1, 3 ,6 , -2, -1,-3, 2,7 输出: 1 -1 2 -2 3 -3 我的代码在测试用例中失败 输入数组= -1 -2 -5 -6 1 3 4 2 5 6 预期输出= 1 -1 2 -2 5 -5 6 -6我的输出=6 -6 5 -5 1 -1 2 -2 我哪里做错了

使用std::map进行排序的地图会产生结果。如果您愿意拥有自己的排序函数,请使用带有重载()运算符的结构包装器,并记住特定于容器的算法比通用算法更好。