`make_unique_for_overwrite` 仍然初始化 `std::pair` 元素

我希望

auto myPairs = make_unique_for_overwrite<pair<uint64_t, void*>>[]>(arraySize);

会给我的pairs未初始化的内存。无论如何,我稍后会覆盖它们,并且(不必要的)初始化目前对我的算法的 600 毫秒整体运行时间中的 120 毫秒负责。

避免这种初始化的最惯用的方法是什么?

回答

根据cppreference,std::pair总是值初始化(又名零)其元素的默认构造函数。

解决方案是摆脱pair. 您可以将其替换为具有两个成员的结构。

尝试使用reinterpret_cast这种结构std::pair会导致未定义的行为。


以上是`make_unique_for_overwrite` 仍然初始化 `std::pair` 元素的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>