检查二维向量的元素是否为空

问题描述

所以我有一个初始化的对象指针的二维向量。有些成员有一个对象,而有些成员是“空的”

Class Obj{int x,y};
std::vector<std::vector<Obj*>> thing;

for(int i = 0; i < 4; i++)
{
 std::vector<Obj*> row(4,0);
 for(int j = 0; j < 4; j++)
 {
  if(i%2)
  {
  Obj* obj1 = new Obj();
  row.push_back(obj1);
  }
  else
  {
  row.push_back(NULL);
  }
 thing.push_back(row);
}

所以当我去检查时:

if(thing[i][j] != NULL)

如果它是空的,我会得到一个分段错误。那么如何检查二维向量中的元素呢? 因为

if(thing != NULL)

不起作用,它给了我错误:

comparison between NULL and non-pointer ('std::vector<std::vector<Field *> >' and NULL) [-Wnull-arithmetic]
invalid operands to binary expression ('std::vector<std::vector<Field *> >' and 'long')

同时

if(thing.at(i).at(j) != NULL)

会给我一个超出范围的错误 当 i 和 j 始终是相同的值时

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)