使用 Key 对 C++ 中的哈希映射进行排序. 无法排序
sort a hashmap in c++ using key. unable to sort
#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
进行排序的地图会产生结果。如果您愿意拥有自己的排序函数,请使用带有重载()
运算符的结构包装器,并记住特定于容器的算法比通用算法更好。
相关文章:
- 使用 Key 对 C++ 中的哈希映射进行排序. 无法排序
- 如何按值对无序哈希映射进行排序
- 从映射<字符串、矢量中对唯一值进行排序<string>>
- 映射C++按值排序和插入元素
- 使用按插入方式排序的参数创建哈希映射
- 为什么内置排序无法对向量映射进行排序
- 根据类成员对同一密钥的多映射元素进行排序
- 以std::字符串作为关键字,按字典顺序对一个无序映射进行排序
- 使用原子指令确保映射访问安全,是否可以使用两个不同的原子对指令进行重新排序
- 通过多个键和存储映射对大量向量进行排序
- 对键进行排序后,按值对多映射进行排序
- 字节不符合记忆映射和对文件进行排序
- 排序标准::映射<字符串,双精度>
- STL映射排序
- 将C++内存排序映射到Java
- 对一个无序映射c++进行排序时数据丢失
- 如何使用模板创建排序映射整数索引
- 存储内部排序映射元素的最快方式
- 在Rcpp中用(西班牙语)重音单词排序映射
- 是否有一个平面的未排序映射/集实现