【发布时间】:2021-06-09 09:08:52
【问题描述】:
我实现的 push_back 函数:
void push_back(T& num) {
my_vec[index] = num;
index++;
}
还有 emplace_back 函数:
template<class... Args>
void emplace_back(Args&&... args) {
push_back(T(std::forward<Args>(args)...));
}
你觉得这有什么问题吗?如果是,请告诉我
另外,请告诉我这是如何工作的?
请注意:emplace_back 不是我的实现,我是从其他问题中获取的,因为我正在寻找一种方法来实现我自己的 emplace_back。
【问题讨论】:
-
它没有达到
emplace_back的目的,你要么需要让push_back使用可移动的值,要么让push_back调用emplace_back -
emplace_back的想法是在原始内存中就地构造一个元素。你只是在使用简单的分配,这不是emplace_back应该做的,即使它是一个移动分配。 -
emplace_back在placement new 中使用了一些东西,所以你的实现是错误的。 -
这不是我的实现。我已经提到过。取自这里:stackoverflow.com/questions/58881357/…