C ++标准库是否有按插入顺序排序的集合? [英] Does the C++ standard library have a set ordered by insertion order?

查看:85
本文介绍了C ++标准库是否有按插入顺序排序的集合?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

C ++标准库是否具有有序集"数据结构?所谓有序集,是指与普通的 std :: set 完全相同的东西,但它会记住您向其中添加项目的顺序.

Does the C++ standard library have an "ordered set" datastructure? By ordered set, I mean something that is exactly the same as the ordinary std::set but that remembers the order in which you added the items to it.

如果没有,模拟一个的最佳方法是什么?我知道您可以做一些事情,例如使用一组对,每个对存储添加的数字和实际值,但是如果有更简单的解决方案,我不想跳过.

If not, what is the best way to simulate one? I know you could do something like have a set of pairs with each pair storing the number it was added in and the actual value, but I dont want to jump through hoops if there is a simpler solution.

推荐答案

没有单一的同类数据结构将具有此属性,因为它是顺序的(即元素按插入顺序排列)或关联的(元素按某种顺序排列)顺序取决于值).

No single, homogeneous data structure will have this property, since it is either sequential (i.e. elements are arranged in insertion order) or associative (elements are arranged in some order depending on value).

最好的,干净的方法可能类似于 Boost.MultiIndex .在容器上添加多个索引或视图",这样您就可以拥有一个顺序索引和一个有序索引.

The best, clean approach would perhaps be something like Boost.MultiIndex, which allows you to add multiple indexes, or "views", on a container, so you can have a sequential and an ordered index.

这篇关于C ++标准库是否有按插入顺序排序的集合?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆