矢量矢量,从数组中分离不同的值

时间:2013-09-28 20:06:47

标签: c++ arrays

我需要从二维数组中分离值。我需要做的就是存储具有特定值的所有字段索引。

例如,我可能有一个数组,其中3个单元格的值为1,10个字段的值为2。 我尝试创建1个向量,它存储值为1的所有索引,另一个向量存储值为2的所有索引。

这是我一直在努力编写的代码,但它似乎没什么意思

void searchForGrains(Cell ** tab,int _size){

storage.push_back(tab[0][0]);
Point p(0,0); // Point refers to array indexes
storage[0].points.push_back(p);

for(int i=0 ; i<_size ; ++i){
    for(int j=0 ; j<_size ; ++j){
        int counter = 0;

        for(unsigned int k=0 ; k<storage.size() ; k++){

            if(tab[i][j].value == storage[k].value){
                Point pp(i,j);

                storage[k].points.push_back(pp);
            }
            else
                counter++;
        }
            if(counter == storage.size())
                storage.push_back(tab[i][j]);

    }
}

}

1 个答案:

答案 0 :(得分:0)

我认为这是一个非常简单的逻辑错误。问题是,当您在存储向量中添加新条目时找到新值时,不会添加找到新值的点。除了0,0那个你做了一个特例,但你不需要这样做。试试这个

void searchForGrains(Cell **tab, int _size)
{
    for(int i=0 ; i<_size ; ++i)
    {
        for(int j=0 ; j<_size ; ++j)
        {
            int counter = 0;
            for(unsigned int k=0 ; k<storage.size() ; k++)
            {
                if(tab[i][j].value == storage[k].value)
                {
                    Point pp(i,j);
                    storage[k].points.push_back(pp);
                }
                else
                    counter++;
            }
            if(counter == storage.size())
            {
                storage.push_back(tab[i][j]);
                Point pp(i,j);
                storage[storage.size() - 1].points.push_back(pp);
            }
        }
    }
}

毫无疑问,这可以提高效率,但我认为它有效。