【发布时间】:2016-12-09 08:06:02
【问题描述】:
在我提出问题之前,让我提前提一下,我知道这个话题已经讨论了很多,但是通过查看大多数答案,我再次未能找到实现我想要的正确方法(很可能是因为我错过了给出的答案)。 所以,假设我想创建 20 倍的对象向量(每个大小为 10),它应该是全局范围的(从某种意义上说,这是在类内部完成的,我希望这些对象向量在类之外传递)。 所以,我真的不确定以下是否有效:
for ( int i =0; i<20; i++)
vector<A> * vec_of_class = new vector<A>(10);
/*where A is the class and I use new to have them in the heap,
so that they won't be local */
现在,我知道这意味着我应该格外小心地处理它们 并确保我准备删除它们,但我不确定我所做的操作是否有效。一般来说,我想实现初始化可以在全局范围内使用的对象 A 的 20 个不同向量(操作发生在另一个类的函数内部),我知道它可以使用 对象 A 的向量向量,但我想了解如何正确执行此类操作(在另一个类的主体函数内初始化对象 A 的 20 个不同向量并全局使用它们)。 我希望我的问题不会让人困惑,你可以在这里给我一些帮助。
【问题讨论】:
-
好吧,我也是这么想的,但是那我该如何正确操作呢?
-
你为什么不直接
vector<vector<A>> vec_of_class(20, vector<A>(10));? -
我怀疑你想要这样的班级成员:
std::vector<std::vector<A> > member {20, std::vector<A>(10)};。等等,20 个向量,每个向量 10 个元素。 -
向量的向量有什么问题?你为什么要拒绝对你陈述的问题最自然、最直接的解决方案?有什么事情你忘了告诉我们吗?
-
您需要解释这些原因。在那之前,摆在我们面前的显然是XY problem 的一个实例。如果这些原因确实与您声称的问题无关,那么它们如何影响解决方案?
标签: c++ object vector heap-memory