gpt4 book ai didi

c++ - C++中原始STL实现中 "construct"方法逻辑的理解

转载 作者:行者123 更新时间:2023-11-28 02:36:20 26 4
gpt4 key购买 nike

<分区>

在遍历 Alexander Stepanov 时原始STL(Standard Template Library)源代码,我从内存分配器函数文件中遇到了以下内容:defalloc.h

template <class T1, class T2>
inline void construct(T1* p, const T2& value) {
new (p) T1(value);
}

我无法完全理解并有以下问题/疑问:

  1. 在我看来,它与 T1 类型的复制构造函数有关?
  2. 为什么上面的函数是两种类型 T1T2 的模板?。第一个应该是 T1*,第二个(值)应该是 *T1
  3. 为什么在上面的逻辑中使用了new?。我查看了它的用途并在文件 vector.h 中找到了以下内容
void push_back(const T& x) {
if (finish != end_of_storage) {
construct(finish, x);
....
....
}

所以基于上面,finish已经获取了内存并被传递进去了。另一个参数是 x,它是相同类型 T 的值。这些是我能够想到/理解的几个概念。

在我看来,它是一个非常普遍但很重要的函数,已在整个 STL 逻辑中使用。有人可以解释一下上面的概念吗?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com