保留副本中元素从多个集合到另一个多集的顺序

时间:2017-08-03 14:33:23

标签: c++ c++11

我有2 std :: multiset

multiset<myObject *,dfa_ptr_states_less> m1;
multiset<myObject *,dfa_ptr_states_less> m2;

我在其他文件(myObject.h)中定义了比较函数

struct dfa_ptr_states_less
{
   bool operator()(const myObject *l, const myObject *r) const
   {
       return ( l->get_num_states() < r->get_num_states() );
   };
};

其中get_num_states是myObject类的字段。

m2为空。 m1指向动力学对象。我必须在m2中复制m1,即从m1到m2的指针的浅表副本。

for(auto &ptr : m1)
   m2.insert(ptr); 

简单但我怀疑是:m1中元素的顺序是以m2保存的吗?如果没有,我该怎么办? (就我的目的而言,订单非常重要)

更新:
也许有可能做到:

m2=m1

1 个答案:

答案 0 :(得分:3)

是的,订单在复制时保留(以及在迭代和插入时)。

是的,multiset支持复制分配。