假设我有一些代码,例如:
typedef std::vector<std::vector<std::vector<long int> > > posHistory;
posHistory pHist (1, vector<vector<long int>>(1, vector<long int>(1,0)));
跟踪,例如:
- 狗的数量。
- 次数迈出一步。
- 每一步的位置。(单位步长(1))
如何为每次排便添加一个位置?我有:
方向 = 维度和维度之间的某个随机数(比如 2d 的 -2,2) tdof = 平移自由度,基本上是每个轴。
for (unsigned int tdof = 0; tdof < dimensions; tdof++)
{
if (fabs(direction) < tdof)
{
walkHist[(int) walkHist.back()][(int) walkHist[walkHist.back()].size()][tdof] = (long int) copysign(1, direction);
}
}
给我带来麻烦的部分是:
walkHist[walkHist.size()-1][walkHist[walkHist.size()-1].size()][ (long int) copysign(1, direction)];
后来在我的代码中:
walkHist[(walkHist.size()-1)].push_back();
walkHist.push_back();
我很确定这是 size_type 到索引之间的转换问题,但我该如何纠正呢?
我试过铸造,但这似乎不起作用,尽管我可能做错了。简而言之,帮助?
编辑 1
第一次推回给了我一个错误:
saw.cpp:62:50: error: no matching function for call to ‘std::vector<std::vector<long int> >::push_back()’
编辑 2
嗯,这似乎walkHist.at(walkHist.back()).size()
给了我:
saw.cpp:49:52: error: no matching function for call to ‘std::vector<std::vector<std::vector<long int> > >::at(__gnu_cxx::__alloc_traits<std::allocator<std::vector<std::vector<long int> > > >::value_type&)’