将2D阵列压缩为1D阵列

时间:2016-10-12 20:25:29

标签: c++ arrays loops

我有一个四边形(二维数组),由数字组成,范围从0到255 并且数组的最常见值(在我的情况下为2)是背景值

我必须在这种排列的一维数组中放置除背景值之外的数组的所有值(我必须忽略包含2的所有情况)

行,列,值,行,下一列,下一个值

例如我有

{2,3,2,2},
{2,2,2,2},
在1D数组中,它将像{ 1,2,3,}

我添加了空格以使其更具可读性

这是我的数组

int image1[MAXL][MAXC]=
{
    {2,3,2,2},
    {2,2,2,2},
    {2,255,2,2},
    {255,2,2,2},
    {2,255,2,2}
};

和循环

 for (int i = 0; i<nbc;i++)
{
    for (int j=0; j<nbl;j++)
    {
        if (image1[j][i]==BackColor)
        {

        }
        else 
    }
}

nbc和nbl分别是列数和行数

感谢您的帮助

编辑:我完全失败了我的例子我没有忽略2,现在应该没事了

1 个答案:

答案 0 :(得分:0)

使用std::vector

的简单方法
std::vector<int> result;
for (int i = 0; i<MAXL;i++)
{
    for (int j=0; j<MAXC;j++)
    {
        if (image1[i][j] != BackColor)  // Notice !=
        {
            result.push_back(i+1);
            result.push_back(j+1);
            result.push_back(image1[i][j]);
        }
    }
}


for (auto x : result)
{
    std::cout << x << " ";
}
std::cout << endl;
  

输出:

     

1 2 3 3 2 255 4 1 255 5 2 255

http://ideone.com/yJawu5