c++ - 在C++中访问unordered_set的最后一个元素

标签 c++ unordered-set

我用[2,3,5]创建了一个unordered_set,我想以FIFO顺序访问,如何使用unordered_set进行尝试,尝试这样做但遇到编译错误。

int showFirstUnique() {
    if(unique.empty())
        return -1;
    else{
        unordered_set<int> :: iterator itr=unique.end();
        itr--;
        return *itr;
   }
}

最佳答案

Access last element of unordered_set in C++



您可以使用访问前向列表的最后一个元素的相同方法来访问无序关联容器的最后一个元素:通过迭代这些元素直到到达它为止。

这样做的渐近复杂度当然是线性的,并且通常不会使用无序容器来完成。

itr--;


这是行不通的,因为无序容器迭代器是正向迭代器。它们不能向后迭代。

I want to access in FIFO order



无序容器的元素未按FIFO顺序存储。这种容器的最后一个元素与元素插入的顺序无关。

您可以改用std::queue例如具有FIFO顺序。

关于c++ - 在C++中访问unordered_set的最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61482646/

相关文章:

c++ - 将 std::unordered_map 值移动到 std::vector

c++ - 为什么 Foo(b) 在 C++ 中编译成功?

c# - 尝试进行串行端口通信,返回 0x102 作为返回码

c++ - 如何在 C++ 中制作一组无序的整数对?

c++ - 纹理渲染和 VBO 的 [OpenGL/SDL/C++]

c++ - 为什么 Visual C++ 不对最琐碎的代码执行返回值优化?

c++ - unordered_set::find 和 noexcept

c++ - 为什么具有自定义哈希函数和自定义类的 unordered_set 需要初始数量的存储桶?

c++ - unordered_set 的迭代器减法不起作用

c++ - 是否可以通过桶迭代器从 std::unordered_set 中删除元素?