0

我正在尝试将一个向量发送到一个bubbleSort函数中,以便在一个一个生成数字时将它们从最大值组织到最小值,但是我收到了“C2100:非法间接”警告。有人可以帮我吗?

private: void bubbleSort(vector<int> &matrixPtr)
{
    int temp;             
    int numLength = *matrixPtr.size( );//length of vector 
    for (int i = 1; (i <= numLength);i++)
    {
        for (int j=0; j < (numLength -1); j++)
        {
            if (*matrixPtr[j+1] > *matrixPtr[j])      
            { 
                temp = *matrixPtr[j];//Swap elements
                *matrixPtr[j] = *matrixPtr[j+1];
                *matrixPtr[j+1] = temp;
            }
        }
    }
}

bubbleSort 是从它前面的另一个函数中提取的:

 bubbleSort(&output);//pass to bubble sort
              for (int rows=0;rows<creation->getZeroRows();rows++)
                {
                 for (int cols=0;cols<creation->getCols();cols++)
                 {
                     txt_DisplayRowSum->Text= String::Concat(txt_DisplayRowSum->Text, (*creation->zeroArrayPtr)[rows][cols]," ");
                 }
                 txt_DisplayRowSum->Text+=" \n";
              }

提前谢谢你的帮助

4

1 回答 1

3

您错误地使用了参考。

而不是*matrixPtr.size( )你需要的matrixPtr.size(),而在函数中其他任何地方你都不需要的*时候引用matrixPtr。此外,将向量传递给函数时,您应该传递 justoutput和 not &output

你不应该也不能使用像指针这样的引用。虽然相似,但它们在几个重要方面有所不同。我还推荐这个问题来很好地总结这些差异。

于 2013-11-07T20:24:13.427 回答