如何访问指向指向对象的指针向量的指针向量的向量中的转发列表中的转发列表?
How to access forward lists in a vector array of pointers to vectors of pointers to forward lists of pointers to objects?
这是相关的代码段:
std::vector<std::vector<std::forward_list<Person*>*>*> grid;
for (int i = 0; i < criticalValuex; i++) {
std::vector<std::forward_list<Person*>*>* list;
for (int j = 0; j < criticalValuey; j++) {
std::forward_list<Person*>* flist;
list->push_back(flist);
}
grid.push_back(list);
}
for (Person *person : people) {
int i = (int)((person -> getPosition().x - city.getPosition().x + citySize.x / 2) / cellSize);
int j = (int)((person -> getPosition().y - city.getPosition().y + citySize.y / 2) / cellSize);
if (i < citySize.x / cellSize && j < citySize.y / cellSize) {
grid[i][j]->push_front(person);
}
}
忽略人物或任何城市参数。错误不是由变量或类引起的。当我写网格[i][j]->push_front(人)时发生错误;即使它应该有效。
我认为 grid[i][j] 应该是指向前向列表的指针,所以如果我尊重它,那么我会返回前向列表,对吗?但它告诉它没有成员"push_front"。
注意!网格中的元素是指针。
正如std::vector<std::vector<std::forward_list<Person*>*>*> grid;
所宣布的,grid[i]
的类型是std::vector<std::forward_list<Person*>*>*
。 它不是一个数组,而是一个数组的指针。所以grid[i][j]
不会编译,而(*(grid[i]))[j]
会编译,它的类型是std::forward_list<Person*>*
.
如果要进入转发列表,正确的代码是(*(grid[i]))[j]->push_front(...)
。
更重要的是,将网格声明为类型std::vector<std::vector<std::forward_list<Person*>>>
是更简单的方法。
相关文章:
- 函数向量_指针有不同的原型,我可以构建一个吗
- 有没有一种"cleaner"的方法可以在指向基的指针向量中找到派生类的第一个实例?
- 使用向量类的c++指针
- 如何使用C++初始化向量;脚本化值不是数组、指针或矢量错误
- 如何更改唯一指针向量的可见性
- C++ 独特指针练习的向量
- C 中的向量指针的清晰图
- 当向量位于内部类中时,如何删除指向对象的向量指针
- std::向量指针
- 指向结构体的向量指针错误
- 删除指向指针的向量指针时出错
- 映射不同类型的向量指针
- 在c++中传递向量指针
- 虚拟类的向量:指针是干净的方法吗
- 如何从另一个向量/对象集构造新的向量/指针集
- 模型视图控制器- c++向量指针,太多的传递
- 为什么向量指针占用这么多内存?
- 删除条目向量指针的静态映射c++
- 复向量指针
- c++数组向量指针的初始化