我有一个树状结构
class Directory
{
public:
void merge(Directory&& dir);
private:
std::map<Key, Directory> directories;
};
合并应将 dir 中的每个子目录移动到目录中。这可以在不复制所有密钥和目录的情况下完成吗?
我试着说
auto i=dir.begin();
while(i!=dir.end())
{
directories.insert(std::move(*i));
++i;
}
在不可复制类型的 Key 上,这将失败,并显示 Key 的已删除复制 ctor 错误。安顿会解决问题吗?如果是这样,我该如何为不支持该方法的 4.8 之前的 gcc 使用解决方法?
编辑:我发现迭代器返回的键是 const,我不应该更改键,因为这会使查找:s 失败。但是,我不再需要密钥了,所以现在我想知道在这种情况下,首先将类型转换为非 const 是否安全。