当我尝试为这个向量向量赋值时,我不断遇到分段错误。我基本上是从图像中读取像素,然后尝试创建一个向量向量,您可以访问该行,然后访问该行上的像素以获取该点的像素。但是当我尝试将特定像素分配给像素值时,它会给我一个分割错误。我使用占位符 {255,255,255} 作为示例像素,但如果我能让它工作,我计划使用 this->PIX[num_pix].r() ,这基本上是我的 Image 类中的像素获取器,其中 num_pix 是迭代的当前像素。
vector<vector<Pixel>> Image::as_rows(){
vector<vector<Pixel>> pixels;
int i,k,height, width,pix_num;
pix_num=0;
height = this->HDR.height();
width = this->HDR.width();
for(i=0;i<height;i++){
for(k=0;k<width;k++){
pix_num++;
pixels[i][k] = {255,255,255};
}
}
return pixels;
}
您的向量当前为空,这意味着当您尝试分配给您不拥有的内存时,您将出现未定义的行为(使用pixels[i][k] = {255, 255, 255}
).
声明向量时,您可以使用正确数量的对象来初始化向量:
vector<vector<Pixel>> pixels(height, vector<Pixel>(width));
另外,对于未来,您可以使用.at()
而不是下标运算符来强制边界检查并避免 UB。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)