`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会导致未定义的行为。
THE END
二维码