gpt4 book ai didi

c++ - 在 C++ 中创建池概念

转载 作者:行者123 更新时间:2023-11-28 03:32:27 25 4
gpt4 key购买 nike

我有一个结构

struct Employee 
{
char uName [255];
struct Employee * next;
struct Employee * prev;
};

所有我想一次分配100个结构对象的内存,然后一个一个地使用它们我制作一个链表。如果内存被完全消耗然后我想再次分配100个对象内存

我正在做分配

struct Employee * chunk=new struct Employee[100];

现在,当我想向链表中添加一个新节点时,我想从这个已经分配的内存中获取对象。有人能告诉我如何实现吗

Employee * pEmployeeData=NULL;
for(long int i=1;i<=100;i++)
{
pEmployeeData=EmployeePool+i;
pEmployeeData->next=NULL;
pEmployeeData->prev=NULL;
InsertAtEnd(pEmployeeData);
}

InsertAtEnd 在链表末尾插入节点。请告诉如何实现这一点

最佳答案

我强烈建议您不要尝试通过编写自己的链表来重新发明轮子,而是查看 C++ 标准库,其中包含可供您使用的现成容器类型。 (例如 std::vectorstd::list)。

容器类型存在于 C++ 标准库中,用于存储数据/对象的集合。例如,您可以按照以下方式做一些事情

#include <iostream>
#include <vector>
#include <string>

struct Employee
{
std::string name;
int id;
};

int main()
{
std::vector<Employee> my_employees;

Employee fred = { "Fred", 1 };
Employee bob = { "Bob", 2 };

my_employees.push_back( fred );
my_employees.push_back( bob );


std::cout << my_employees[0].id << " " << my_employees[0].name << "\n"
<< my_employees[1].id << " " << my_employees[1].name << std::endl;
}

标准容器易于使用和学习(您会找到大量介绍如何使用它们的 Internet 资源 - 您的书也应该告诉您!);如果您是 C++ 的新手,那么强烈建议您在尝试创建自己的之前弄清楚如何使用它们。

关于c++ - 在 C++ 中创建池概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12098413/

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