C++ 向量的向量,从数组中分离不同的值

C++ 向量的向量,从数组中分离不同的值,c++,arrays,C++,Arrays,我需要从2d数组中分离值。我所需要做的就是存储具有特定值的字段的所有索引 例如,我可能有一个数组,其中3个单元格的值为1,10个字段的值为2。 我尝试创建一个向量,它存储值1的所有索引,另一个存储值2的所有索引 这是我一直试图写的一段代码,但它似乎没有写出来 无效搜索(单元格**选项卡,整数大小){ storage.push_back(选项卡[0][0]); 点p(0,0);//点指数组索引 存储[0]。点。推回(p); 对于(int i=0;i我认为这是一个非常简单的逻辑错误。问题是,当你找到

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

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

这是我一直试图写的一段代码,但它似乎没有写出来

无效搜索(单元格**选项卡,整数大小){

storage.push_back(选项卡[0][0]);
点p(0,0);//点指数组索引
存储[0]。点。推回(p);

对于(int i=0;i我认为这是一个非常简单的逻辑错误。问题是,当你找到一个新值时,尽管你在存储向量中添加了一个新条目,但你没有添加找到新值的点。除了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);
            }
        }
    }
}
void搜索(单元格**选项卡,整数大小)
{

对于(int i=0;我恐怕对你对这段代码所做的解释感到困惑。这里有一件事“它不起作用”不会告诉任何人任何事情。说出你函数的输入是什么,你期望输出是什么,输出实际上是什么。试着解释一下你所说的这些单元格和字段是什么。对不起,我错误地删除了部分解释。因此,作为输入,我有一个数组(2d)。该数组的每个字段都有一个值。作为输出,我希望获得字段的所有索引,例如一个向量中的值=1,另一个向量中的值=2,依此类推,所以基本上我希望将每个值的所有索引存储在单独的向量中。明白了吗(我想)下一件事是涉及的变量的类型,例如,你是如何声明存储的。那么向量存储;单元格是一个有值的类,在这个类中,我还有一个向量点,它存储每个单元格的索引
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);
            }
        }
    }
}