【发布时间】:2018-06-09 01:18:20
【问题描述】:
我的 std::map 被称为 uniformBlocks。当我注意到一些奇怪的事情时,我正在测试添加新元素的方法。当我添加新的键值对时,使用以下方法:
uniformBlocks["MatrixBlock"] = matrixBlock;
调用默认构造函数。但是,当我使用 insert 时,会调用复制构造函数,这是意料之中的。
uniformBlocks.insert(
std::pair<const std::string, glWrapper::UBO>("MatrixBlock", matrixBlock)
);
为什么这两种方法有区别。他们不是以同样的方式实现的吗?
【问题讨论】:
-
一旦使用 copy-ctor 构造,其他默认构造,然后复制分配。所以不,它们在引擎盖下是不一样的。
-
@WhozCraig 非常感谢。你知道哪个更快吗?另外,请发表您的答案,以便我接受
-
究竟是什么阻止您尝试任何一种方法,然后对结果进行计时以查看哪种方法更快?
-
@ManhNguyen Yakk 很好地介绍了它。我确定这是一个骗子(现在几乎所有的图书馆和语言问题都是),但我只是没有时间去寻找它。很高兴它有帮助。祝你好运。