我有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
答案 0 :(得分:3)
是的,订单在复制时保留(以及在迭代和插入时)。
是的,multiset
支持复制分配。