如何解决检查二维向量的元素是否为空
所以我有一个初始化的对象指针的二维向量。有些成员有一个对象,而有些成员是“空的”
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)
解决方法
您在循环中创建“行”向量,填充它们并让它们过期(超出范围)。
您需要在循环结束时将它们推入“事物”。
thing.push_back(row);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。