【发布时间】:2014-05-02 11:42:23
【问题描述】:
是否可以将映射从 1 个实例 A 合并到另一个实例,而无需对 B 的复制构造函数进行不必要的调用?
class A
{
...
A & operator=(A && rhs);
map<string, B> map;
};
class B
{
B();
B & B(B && rhs);
...
}
...
A instanceOfA1;
A instanceOfA2;
B instanceOfB1;
B instanceOfB2;
B instanceOfB3;
B instanceOfB4;
instanceOfA1.map.insert( pair<string, B>("one", instanceOfB1));
instanceOfA1.map.insert( pair<string, B>("two", instanceOfB2));
instanceOfA1.map.insert( pair<string, B>("three", instanceOfB3));
instanceOfA2.map.insert( pair<string, B>("four", instanceOfB4));
instanceOfA2 = instanceOfA1;
因此 instanceOfA2 中的映射包含 B 的所有四个实例。
编辑:代码中的固定实例。
【问题讨论】:
-
不应该是
instanceOfA2 = move(instanceOfA1)吗?