我正在尝试将一个向量发送到一个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";
}
提前感谢您的帮助
答案 0 :(得分:3)
您使用的引用不正确。
而不是*matrixPtr.size( )
您需要matrixPtr.size()
以及函数中的其他位置,而在引用*
时,您不需要matrixPtr
。此外,将向量传递给函数时,您应该仅传递output
而不是&output
。
您不应该也不能使用像指针这样的引用。虽然相似,但它们在几个重要方面有所不同。我还建议this question对这些差异进行总结。