微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决检查二维向量的元素是否为空

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

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 始终是相同的值时

解决方法

您在循环中创建“行”向量,填充它们并让它们过期(超出范围)。

您需要在循环结束时将它们推入“事物”。

thing.push_back(row);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。