Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 这是在C+中使用指针的好方法吗+;?_C++_Pointers - Fatal编程技术网

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

C++ 这是在C+中使用指针的好方法吗+;?,c++,pointers,C++,Pointers,我想写一个应用程序来创建一些日程安排。通常我用Matlab或Python之类的语言开发。这个新应用程序的计算量非常大,我们有一个最新的Matlab版本,但是运行一个实例需要几分钟到几个小时。因此,我想用C++来重写它。p> 我只想问一个关于指针的基本问题,因为我不太熟悉这个概念 让我们非常简单地说,我想创建一个程序来创建时间表。因此我写了一个班级“人”、“房间”、“日程安排”和“会议”。 我的计划是制定一个由几次会议组成的时间表。此外,我想将会议链接到特定的房间和人员。假设我创建了3个人A、B和

我想写一个应用程序来创建一些日程安排。通常我用Matlab或Python之类的语言开发。这个新应用程序的计算量非常大,我们有一个最新的Matlab版本,但是运行一个实例需要几分钟到几个小时。因此,我想用C++来重写它。p> 我只想问一个关于指针的基本问题,因为我不太熟悉这个概念

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

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

通常,对于不同的语言,我会简单地给所有的东西一个id,然后只保存不同类中每个会议或个人的id。我现在的想法是,在阅读了一些C++书籍后,我们使用指针,但是我不知道我是否可以用我想要的方式使用它们。我的计划是创建我的person对象和我的room对象,然后创建我的会议,并在每个person和room对象中使用指针向量,其中包括所有参与的会议。每次会议都由一些一般属性和指向参与人员的指针向量以及指向会议室的指针组成。这个想法是这样的,我不需要总是比较ID,我有一个直接链接到信息

但我真的不确定这样做是不是一个好主意,还是简单地给每件事一个id并存储id更好,比如会议m1有id 100,所有会议都存储在一个向量中,如果一个人参加了会议100,我想得到关于会议100的信息,只需浏览会议向量并比较所有ID。(或者更可能使用地图)。如果我想看到每个人都参加m1会议,我也会这么做。 在我正在读的书中,作者说如果可能的话,你应该避免使用指针。。。例如,如果我使用智能指针,这也是真的吗


谢谢你的帮助,别忘了我对C++很陌生,这意味着我真的希望代码保持简单(例如我不知道如何使用数据库)

如果你正在编写一个调度程序,我建议使用一个声明性语言。日程安排很复杂,最好让计算机来做这项工作。这不仅使您更容易编程,而且使程序变得很小。

TL;DR

< >使用C++指针的最佳方法是使用或.< /P>
通常不需要使用原始指针,也不需要自己管理内存分配。

编写一些简单的代码并测试您的想法。您将看到C++在编码时如何最好地表示您的概念。为什么使用原始指针?您有
std::shared',std::unique_ptr等?这是我的问题,为此使用智能指针是一个好主意吗?通过简单的代码更好地理解指针,建议使用共享的、unique_ptr(为您的程序执行内存管理)但是你需要理解动态内存管理的概念。使用智能指针总是一个好主意你说的“声明性语言”到底是什么意思。是的,我同意,这是非常复杂的,这就是为什么我想编程它。我的例子很简单。我的实际应用程序需要安排许多不同观测站的观测时间,并对此进行优化,这要复杂得多。目前,我们有一个MATLAB代码,它由几行10k的代码组成。声明式编程就是告诉计算机什么是真的,什么是假的,计算机会给出一个或多个可能的解决方案。例如,SQL是一种声明性语言。你告诉它什么是真实的(你所查询的),它回答了你所有可能的查询解决方案。对于时间表计划,您可以告诉它有关时间表中每个元素的真相(例如,您有哪些房间,它们的容量等),并告诉它什么是错误的(例如,一个房间在同一时间被多次使用不可能是真的)。不,不是。声明某事就是说“我能做到”。相反,您一直在使用的语言(matlab、python、java等)被称为命令式编程语言。它们是声明性语言的对立面,因为你告诉计算机如何做某事。在C++中使用原始指针有很多原因。智能指针只是用来代替拥有原始指针。请在自己的回答中详细说明。