在unordered_set上迭代
我需要在C ++中的无序地图上进行帮助。我试图将集合的元素放入数组中,以便对数组进行排序。
for(auto it=s.begin();it!=s.end();it++){
a[i]=*it;
i++;
}
I need help iterating over an unordered map in C++. I am trying to put the elements of the set into an array so that I can sort the array.
for(auto it=s.begin();it!=s.end();it++){
a[i]=*it;
i++;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您在这里使用了许多不同的术语。
因此,有点不清楚您真正想做什么。
如果您有一个
std :: Unordered_set
,并且要将数据放入std :: Set
中,则可以简单地使用其范围构造函数并写出类似的内容。 std :: set< int>订购(s.begin(),s.end());
相同的功能将与具有范围构造函数的
std :: vector
一起使用。数组,C型或C ++std ::数组
更为复杂,因为您需要提前了解原始数据的大小。因为:数组的编译时间definde固定尺寸。用于排序
std :: maps
或std :: unordered_map
根据其“值”而不是密钥,您需要使用std :: Multiset < /代码>带有特殊分类函数或lambda。如果您编辑问题并提供更多详细信息,那么我将为您提供源代码。
Your are using many differen terms here.
So, it is a little bit unclear what you really want to do.
If you have a
std::unordered_set
and want to put the data into astd::set
, then you can simply use its range constructor and write something likestd::set<int> ordered(s.begin(),s.end());
The same would work with a
std::vector
which has also a range constructor. Arrays, either C-style or C++std::array
are more complicated, because you need to know the size of the original data in advance. Because: Arrays have a compile time definde fixed size.For sorting
std::maps
orstd::unordered_map
s according to their "value" and not the key, you need to use astd::multiset
with a special sorting functor or lambda. If you edit your question and give more details, then I will provide source code to you.