比如,对于 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 次新的排便和维数坐标槽等待新的排便。
最佳答案
我认为你选择的数据结构适合你的pooHistory
造成困惑。一张狗到排便位置的 map 就足够了。所以要存储你所需要的是:
std::map< std::string, std::vector< location > > pooHistory;
哪里location
是struct location { double lat; double lon; };
. map 的第一个模板参数是std::string
。因为它表示狗的名字。如果您选择使用整数 ID,则可以将其更改为 int
.
每只狗排便的次数简直就是pooHistory["dog-name"].second.size()
.
希望这对您有所帮助!
关于c++ - 将 `push_back()` 与多维 vector 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20027797/