【问题标题】:Vector of pointers, pointing to objects in vector of objects. How to do that?指针向量,指向对象向量中的对象。怎么做?
【发布时间】:2011-12-19 19:56:16
【问题描述】:

我这里有一个 C++ 问题。

我有三个类:Graph、Nodes 和 Edges,用于对简单的 Graph 进行建模。 现在 Graph 类的对象有一个带有 Node 类对象的向量和一个带有 Edge 类对象的向量。

Node 类的对象必须知道所有传入和传出边。并且边缘类的对象必须知道它来自哪个节点以及去往哪个节点。 现在我有以下问题:图中的所有边都存储在边类的向量中。节点类的对象也必须知道一些边,所以我给了它们一个指针向量,指向图形向量中的所属边。但我现在的问题是:如果我从图形的向量中删除一条边,则指针是错误的。

我不想将每个边复制到两个向量中,所以我认为我必须这样做,但我确实看到了从向量中删除某些内容的问题。

有解决方案还是我必须复制每个边缘? 有人可以帮帮我吗?

【问题讨论】:

  • 这样我们的帮助才能最有价值,你能告诉我们这是作业吗?也就是说,这是一种学习练习,还是一种工作或娱乐练习?
  • @Rob:99% 的人说不是作业。也许是学术,但不是家庭作业
  • 这是学术性的。我唯一的问题是这个。这个练习中的其他所有内容对我来说都很清楚,并且很容易编写,但是我对这个向量的东西有问题。因为我必须用向量来做这件事,而且我可能不会复制太多的对象。
  • 告诉我们更多关于“我必须用向量来做到这一点”的信息。为什么不使用,例如std::list
  • 在练习中是一些我必须使用的函数声明,因为它们在那里显示。而那些返回所有可用边或节点的函数类型为“向量”。

标签: c++ pointers vector


【解决方案1】:

我会为所有容器使用描述符或简单地使用 shared_ptr。

描述符是 Boost Graph Library 中的首选武器

【讨论】:

    猜你喜欢
    • 2011-10-01
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    相关资源
    最近更新 更多