这是在C ++中使用指针的好方法吗?

时间:2017-06-10 17:23:11

标签: c++ pointers

我想编写一个应用程序来创建某种计划。通常我用Matlab或Python等语言开发。这个新的应用程序计算量很大,我们有一个当前的Matlab版本,但运行一个实例需要几分钟到几个小时。因此我想用C ++重写它。

我只想问一个关于指针的基本问题,因为我对这个概念并不熟悉。

让我们非常简单地说,我想创建一个程序来创建时间表。因此我写了一个课“人”“房间”“时间表”和“会议”。 我的计划是制定一个由几次会议组成的时间表。此外,我想将会议链接到特定的房间和人员。假设我创造了3个人A B和C以及两个房间r1和r2。现在我想创建一个由三个会议组成的计划,m1,m2和m3。

现在什么是链接所有这些信息的最佳方式?例如,我希望能够选择m1并查看它使用的房间以及参与者。但我也希望能够选择A人,看看他有什么会议,或者选择r1会议室,看看那里将举行什么样的会议。我不想简单地将所有对象复制到所有地方,因为我会创建很多非常大的“会议”对象。 (在我的实际应用程序中,每个对象将有~100个属性,我将创建很多“会议”对象)

通常,使用不同的语言,我只需将所有内容都设为id,然后只保存每个会议或人员在不同类别中的ID。在阅读了一些C ++书籍之后,我现在的想法是使用指针,但我不知道我是否可以按照我想要的方式使用它们。我的计划是创建我的人物对象和我的房间对象,而不是创建我的会议,并在每个人和房间对象中使用由所有参与会议组成的指针向量。每次会议都包含一些常规属性和指向参与人员的指针向量以及指向房间的指针。我的想法是,这种方式我不需要总是比较ID,我有直接的信息链接。

但是我真的不确定这样做是不是一个好主意,或者只是简单地给所有内容添加id并存储id更好,例如会议m1的id为100且所有会议都存储在向量,如果人A参加会议100并且我想获得有关会议100的信息,只需通过会议向量并比较所有ID。 (或者更可能使用地图)。如果我想看到每个人参加会议m1,也要这样做。 在我正在阅读的书中,作者说你应该尽可能避免使用指针......如果我使用智能指针,这也是正确的吗?

感谢您的帮助,不要忘记我是C ++的新手,这意味着我真的想保持代码简单(我不知道如何使用数据库)

2 个答案:

答案 0 :(得分:4)

<强> TL; DR

在C ++中使用指针的最佳方法是使用smart pointerscontainers

通常不需要使用原始指针,也不需要自己管理内存分配。

答案 1 :(得分:-3)

如果您正在编写计划程序,我建议您使用声明性语言。调度很复杂,让计算机完成工作要好得多。这不仅使您更容易编程,而且使程序变得微不足道。