gpt4 book ai didi

c++ - 这两行代码的区别和好处是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:11:37 24 4
gpt4 key购买 nike

我有两行代码需要解释一下。尽你所能告诉我。主要是每个的好处以及内存等幕后发生的事情。

这里有两个结构体作为例子:

struct Employee 
{
std::string firstname, lastname;
char middleInitial;
Date hiringDate; // another struct, not important for example
short department;
};

struct Manager
{
Employee emp; // manager employee record
list<Employee*>group; // people managed
};

在上述结构中使用这两个更好,为什么?

list<Employee*>group;
list<Employee>group;

最佳答案

首先,std::list 是一个双向链表。所以这两个语句都创建了一个员工链接列表。

list<Employee*> group;

这会创建一个指向 Employee 对象的指针列表。在这种情况下,需要一些其他代码来分配每个员工,然后才能将其添加到列表中。同样,每个员工都必须单独删除,std::list 不会为你做这件事。如果要与其他实体共享员工列表,这将是有意义的。最好将员工放在智能指针类中以防止内存泄漏。有点像

typedef std::list<std::shared_ptr<Employee>> EmployeeList;
EmployeeList group;

这一行

list<Employee>group;

按值创建 Employee 对象列表。在这里您可以在堆栈上构造 Employee 对象,将它们添加到列表中而不必担心内存分配。如果员工列表不与其他任何人共享,这是有意义的。

关于c++ - 这两行代码的区别和好处是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6831968/

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