[英]std::map calls default constructor on [], copy constructor on insert()
我的std :: map称为统一块。 当我发现有些奇怪的东西时,我正在测试添加新元素的方法。 当我添加新键时,请使用以下方法进行值对:
uniformBlocks["MatrixBlock"] = matrixBlock;
默认构造函数被调用。 但是,当我使用insert时,将调用复制构造函数,这是预期的。
uniformBlocks.insert(
std::pair<const std::string, glWrapper::UBO>("MatrixBlock", matrixBlock)
);
为什么这两种方法之间存在差异。 他们不是在后台执行相同的方法吗?
如果对象不存在,则[]
创建一个对象,然后返回对该对象的引用。 当时,没有可用参数。
=
然后分配给该参考。
insert
不需要这样做。 它可以使用传入的对简单地就位构建。
仔细使用, emplace
甚至可以取消复制或移动ctor调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.