【发布时间】:2012-06-17 06:58:21
【问题描述】:
我是 C++ 的新手,在尝试获取一个函数(它需要一个数组)来返回一个数组时遇到了麻烦。该函数是一个非常基本的排序算法,用于大小为 4 的整数数组。我所拥有的如下:
int[] sortArrayAscending(int arrayToSort[3]) {
int sortedArray[3];
sortedArray[0] = minOfFour(arrayToSort[0],arrayToSort[1],arrayToSort[2],arrayToSort[3]);
sortedArray[1] = lowerMidOfFour(arrayToSort[0],arrayToSort[1],arrayToSort[2],arrayToSort[3]);
sortedArray[2] = higherMidOfFour(arrayToSort[0],arrayToSort[1],arrayToSort[2],arrayToSort[3]);
sortedArray[3] = maxOfFour(arrayToSort[0],arrayToSort[1],arrayToSort[2],arrayToSort[3]);
return sortedArray;
}
我认为我对需要使用的语法感到非常困惑(对 min、lower、higher、max 的函数调用都可以正常工作。
非常感谢您的帮助。
谢谢
EDIT2:感谢所有 cmets。感谢@Rook 和@Bob Yoplait 的回答,我现在已经解决了。使用的代码是:
int* sortArrayAscending(int arrayToSort[4], int sortedArray[4]) {
sortedArray[0] = minOfFour(arrayToSort[0],arrayToSort[1],arrayToSort[2],arrayToSort[3]);
sortedArray[1] = lowerMidOfFour(arrayToSort[0],arrayToSort[1],arrayToSort[2],arrayToSort[3]);
sortedArray[2] = higherMidOfFour(arrayToSort[0],arrayToSort[1],arrayToSort[2],arrayToSort[3]);
sortedArray[3] = maxOfFour(arrayToSort[0],arrayToSort[1],arrayToSort[2],arrayToSort[3]);
return sortedArray;
}
int _tmain(int argc, _TCHAR* argv[])
{
int testNumbers[4] = {8,14,1,27};
int testSorted[4];
sortArrayAscending(testNumbers,testSorted);
for (int i = 0; i < 4; i++) {
cout << testSorted[i] << endl;
}
system("pause");
return 0;
}
感谢您的所有帮助 - 现在是查找向量的时候了!
PS 我很欣赏@Luchian Grigore 的解决方案很可能是做事的最佳实践方式,但这并不是我的具体问题
【问题讨论】:
-
改用
std::vector<int>。 -
如果你有 C++11,使用
std::array<int,4>。 -
所有数组或向量的大小都应该是 4,而不是 3。
-
“问题 [..] 要求数组”? 这是某种赋值吗?
-
您的 main 现在创建并泄漏了 4 次数组。循环外计算,循环后删除。
标签: c++ arrays dynamic-memory-allocation dynamic-arrays