无法使用std :: strings和std :: vectors将值插入到std :: map中

时间:2014-01-12 19:18:43

标签: c++ c++11 vector stl stdmap

我会先发布我的代码然后解释我的问题:

typedef std::unique_ptr<SEntity> Entity;
typedef std::vector<Entity> EntityVector;
typedef std::map<std::string, EntityVector> EntityVectorMap;

const void pushEntityVector(const std::string& key, const EntityVector& entity_vector)
{
    m_entity_vector_map[key] = entity_vector;
}

正如您可能看到的,我正在尝试将EntityVector插入到EntityVectorMap中。然而,当我这样做时,我遇到了这个问题:

c:\program files (x86)\codeblocks\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\stl_algobase.h|335|error: use of deleted function 'std::unique_ptr<_Tp, _Dp>& std::unique_ptr<_Tp, _Dp>::operator=(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = SE::SEntity; _Dp = std::default_delete<SE::SEntity>]'|

谢谢!

1 个答案:

答案 0 :(得分:3)

m_entity_vector_map[key] = entity_vector尝试复制EntityVector,从而尝试复制 一个Entity本质上是复制std::unique_ptr。你不能复制std::unique_ptr(它不再是唯一的)。

您可能希望将entity_vector移至m_entity_vector_map,但是您无法将entity_vector作为const引用传递到pushEntityVector