【发布时间】:2013-11-17 06:09:32
【问题描述】:
说,对于 MWE,我有一些代码,例如:
typedef std::vector<std::vector<std::vector<long int> > > pooHistory;
pooHistory pHist (1, vector<vector<long int>>(1, vector<long int>(1,0)));
跟踪的,例如:
- 狗的数量
- 每只狗的排便次数
- 每次排便的位置。
当我试图创造新的狗时,排便和协调我遇到了一些问题。 我可以用
创建新的排便pooHist.walkHist.back().push_back(std::vector<long int>(dimensions,0));
为了澄清一下,这会在 x 和 y 坐标的第三维中插入一个具有 2 个索引的数组。 (在实际实现中,维度的数量是可变的。这些狗在数轴、象限、八分圆和任何你喜欢的方位上排便!)
但我似乎无法创造新的狗。
我尝试了类似的东西
pooHist.pushback(std::vector<std::vector<long int>>(1)),但这创造了一个新的排便空间,只有 1 个坐标。
这确实简化了我的代码,因为这教会了我
pooHist.pushback(std::vector<std::vector<long int>>(dimensions)) 也应该造成新的排便......但我离题了。
我不知道如何创建一条新狗,它有 1 次新的排便,并且有维度编号坐标槽等待新的排便。
【问题讨论】:
-
与您的实际问题无关的内容:
pooHist.size()是vector::at函数接受的确切类型,因此您对unsigned long int的强制转换既不必要又错误。你可以简单地使用vector::back。 -
谢谢,这两个我都修好了。我之前尝试过
std::vector::back,但我执行错了。现在我只需要弄清楚原来的问题。
标签: c++ c++11 vector multidimensional-array