C ++错误C2100:非法间接 - bubbleSort

时间:2013-11-07 20:17:21

标签: c++ bubble-sort

我正在尝试将一个向量发送到一个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";
              }

提前感谢您的帮助

1 个答案:

答案 0 :(得分:3)

您使用的引用不正确。

而不是*matrixPtr.size( )您需要matrixPtr.size()以及函数中的其他位置,而在引用*时,您不需要matrixPtr。此外,将向量传递给函数时,您应该仅传递output而不是&output

您不应该也不能使用像指针这样的引用。虽然相似,但它们在几个重要方面有所不同。我还建议this question对这些差异进行总结。