Cpp 中模板队列 ADT 的 STL Emplace( ) 方法的实现

问题描述 投票:0回答:1

我用 C++ 和模板类实现了 STL 队列数据结构。我面临的问题是该模板 ADT 的 emplace() 方法的实现。在 emplace 中,我们使用接收参数通过构造函数构造特定数据类型的对象。我无法以所有数据类型的通用方式实现使用这些接收参数构造该对象的逻辑。谁能帮助实现其逻辑?

我认为只有一种方法就是进行硬编码,即。不是所有数据类型的通用实现。

c++ data-structures c++17 queue emplace
1个回答
0
投票

您可以直接调用构造函数并在特定位置构造一个对象(例如,

p
):

::new (p) T(std::forward<Args>(args)...);

如果您使用 C++20 或更高版本进行编译,则可以使用

std::construct_at
基本上可以实现此目的。

© www.soinside.com 2019 - 2024. All rights reserved.