【问题标题】:Preserve order of elements in copy from a multiset to another multiset保留从多重集复制到另一个多重集的元素顺序
【发布时间】:2017-08-03 14:33:22
【问题描述】:

我有 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

?

【问题讨论】:

标签: c++ c++11


【解决方案1】:

是的,复制时会保留顺序(以及迭代和插入时)。

是的,multiset 支持复制分配。

【讨论】:

  • myObjects 指针会发生什么?我想要一个浅拷贝。 operator= 会这样做吗?
  • @Umbert 他们什么都没有发生。复制不会修改源对象。指针(或任何基本类型)的浅拷贝和深拷贝也没有区别。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-23
  • 1970-01-01
  • 2023-04-07
  • 2013-10-28
  • 2016-08-12
  • 1970-01-01
相关资源
最近更新 更多