我使用以下代码进行转换:
std::set<ObjectType> s(v.begin(), v.end());
但是,我需要保持向量元素的顺序。我怎么能这样做?
答案 0 :(得分:3)
如果没有对矢量进行排序,则不能。 std::set
将内容保持为升序或降序。
如果向量是有序的,那么你只需要将std::set
的比较函数设置为用于对向量进行排序的任何东西。
答案 1 :(得分:2)
当且仅当您的vector
按严格的弱排序排序时才能执行此操作,例如按<
排序以获取数字。在这种情况下,请为set
提供适当的比较对象(您用来对vector
进行排序的对象)并且订单适合。
否则,如果您的vector
未按照拟合标准排序,则无法使set
保留原始顺序,因为排序元素是set
的不变量之一。