从unordered_set中获取最后一个元素
Get Last element from unordered_set
我需要从unordered_set中获取最后一个元素,并且它必须使用unordered_set,而不是任何其他类。(主要是因为我要修改很多已经完成的代码),但根据我一直在寻找的唯一可能的方法是迭代它并保存元素,然后返回它。但在大型电视中,速度太慢了。此外,我试过这个,但没有工作。
unordered_set <int>::iterator it = frames.end();
--it;
我得到了以下错误:"没有匹配'operator——' in '——it'"
之所以有用,主要是因为它以"堆栈"的方式存储数据,如下所示:
unordered_set<int> s;
s.insert(9);
s.insert(4);
s.insert(8);
s.insert(0);
s.insert(1);
unordered_set<int>::iterator it = s.end();
for( it = s.begin(); it!= s.end(); ++it )
cout << *(it) << " ";
打印:"1 0 8 4 9"
所以"最后一个"元素总是9,它是插入的"第一个"元素,正如我之前所说的,以"堆栈"的方式。
有什么改进的办法吗?
在unordered_set中,插入的顺序不一定与迭代该集合时得到的顺序相对应(因此名称为&;unordered&;)。在此数据结构中不支持双向迭代器(使用—操作符)的部分原因是,当您不知道将从中得到的元素的顺序时,能够在unordered_set上向后/向前移动并没有任何区别。
您创建的插入的顺序并不决定您在迭代(插入"9")时将获得的顺序。First并不意味着s.end()会返回一个"9")。这是因为指令顺序完全取决于该集合如何计算您插入的每个对象的哈希值,类似于哈希表。因此,您不能可靠地使用这个集合来复制"堆栈",因为这不是这个特定数据结构的用途。
您可以使用其他c++ STL数据结构来保持顺序,例如std::stack。
相关文章:
- 获取向量C++中第一个值和最后一个值的和
- push_back通过自行创建的对象获取最后一个元素的向量
- 如何获取 std::filesystem::p ath 中的最后一个目录?
- 查询事件日志.如何查询才能单独获取第一个和最后一个事件?
- CPP:如何获取字符的最后一个索引
- 这种获取模板参数包中最后一个元素的方法是否有隐藏的开销?
- C++:为什么最后一个输出不是地址以及如何获取值 9
- 如何使用find_if获取最后一个迭代器
- 如何在QT中获取XML文件的最后一个节点
- 获取第 n 项与 std::set 中第一个/最后一个的偏移量
- 获取列表的第一个和最后一个元素<string>给我非法指令错误
- 如何获取输入文件的行的第二个和最后一个字符,并在C++中组成数组
- istream::getline() 未获取最后一个字符
- WinDivert 1.0.5 DivertRecv() 方法 获取最后一个错误 998
- 获取最后一个错误的宽字符版本
- 如何从数据库(postgre)获取最后一个值并在Qt中显示它
- 从unordered_set中获取最后一个元素
- 无法从文件中获取最后一个 int .txt
- 使用fstream从文件中获取最后一个字节的最佳方法
- push_back获取最后一个元素的向量