【发布时间】: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
?
【问题讨论】:
-
重新更新,是的,这样会更有意义。你试过了吗?另见en.cppreference.com/w/cpp/container/multiset
The order of the elements that compare equivalent is the order of insertion and does not change. (since C++11) -
@underscore_d 是的,现在我试过了。它有效