遍历 unordered_set

iterating over an unordered_set

我需要帮助在 C++ 中迭代无序映射。我正在尝试将集合的元素放入一个数组中,以便我可以对数组进行排序。

for(auto it=s.begin();it!=s.end();it++){
    a[i]=*it;
    i++;
}

您在这里使用了很多不同的术语。

  • unordered_set
  • unordered_map
  • 设置
  • 数组

所以,有点不清楚你到底想做什么。

如果你有一个 std::unordered_set 并且想把数据放入一个 std::set 中,那么你可以简单地使用它的范围构造函数并编写类似 std::set<int> ordered(s.begin(),s.end());

的东西

同样适用于 std::vector,它也有一个范围构造函数。数组,无论是 C-style 还是 C++ std::array 都比较复杂,因为你需要提前知道原始数据的大小。因为:数组有一个编译时定义的固定大小。

为了根据它们的“值”而不是键对 std::mapsstd::unordered_map 进行排序,您需要使用带有特殊排序函子或 lambda 的 std::multiset。如果您编辑问题并提供更多详细信息,那么我将向您提供源代码。