如何修复这个数组排序错误
How to fix this bug on sorting an array?
#include <iostream>
using namespace std;
template <class T>
T sortArray(T data[])
{
int arrsize = sizeof(data)/sizeof(T);
int x,y,temp;
for(y=0;y<arrsize;y++)
{
for(x =0;x<arrsize-y-1;x++)
{
if(data[x]>data[x+1])
{
temp = data[x];
data[x] = data[x+1];
data[x+1] = temp;
}
}
}
return data;
}
int main()
{
int x;
int arr[] = {10,7,32,65,12,6};
int sorted[] = sortArray(arr[]);
for(x=0;x<6;x++)
{
cout<<sorted[x]<<endl;
}
}
当我试图排序编译这个代码时,我得到了的错误
**abcmain.cpp:34: error: expected primary-expression before ']' token
int sorted[] = sortArray(arr[]);
^**
如何修复此错误。如果我删除[],我会得到更多错误
大错特错。在这里修复:
#include <iostream>
using namespace std;
template <class T>
T* sortArray(T data[], int arrsize) // better pass the size of the array, and return T*
{
int x,y,temp;
for(y=0;y<arrsize;y++)
{
for(x =0;x<arrsize-y-1;x++)
{
if(data[x]>data[x+1])
{
temp = data[x];
data[x] = data[x+1];
data[x+1] = temp;
}
}
}
return data;
}
int main()
{
int x;
int arr[6] = {10,7,32,65,12,6};
int *sorted = sortArray(arr, sizeof(arr)/sizeof(arr[0])); // pass size of array
for(x=0;x<6;x++)
{
cout<<sorted[x]<<endl;
}
}
输出:
6
7
10
12
32
65
T sortArray(T data[])
应该返回一个T
,但您使用的是int
数组来捕获它:
int sorted[] = sortArray(arr[]);
要计算,您可以将此方法更改为(不需要返回,即删除return
行(:
void sortArray(T data[])
并称之为:
sortArray<int>(arr);
sortArray
的返回类型是T
,但您返回的是T[]
类型的data
。您应该更改为以下原型:
T* sortArray(T data[]);
您正在进行冒泡排序。
您需要按照如下方式修复方法签名:
T*sortArray(T*数据({
在main((中,您需要修复调用:
int*sort=sortArray(arr(;
这应该可以修复错误。基本上,您发送一个指向数组的指针,并且希望该方法返回一个指向排序数组的指针。
相关文章:
- 显示错误输出的简单数组排序程序
- strncpy之后的char数组的错误行为
- 代码使用向量成功运行,但使用数组显示错误
- C 使用单个函数对具有多种值类型的数组排序
- 通过新的后传递后创建的动态数组的错误以调整函数
- 2D数组排序,空格打乱顺序
- 复制构造函数生成旧数组的错误副本
- 双维数组读取错误
- C 2D数组排序
- C++数组指针错误无法将“int*”转换为“int**”
- C++数组排序 - 将"bbba"和"0001"视为不正确排序的问题
- 数组排序功能
- C++从函数返回的 2D 数组,错误:以非零状态退出
- 使用空指针数组时C++错误
- 在GCC中使用Brace Initializer初始化成员STD ::数组时错误
- 数组函数错误输出
- 数组大小错误,c++ visual studio
- 具有基本结构的结构数组返回错误的答案
- 在VC++6中使用向量进行数组排序时出错,而在VC++2012中没有错误
- C++数组排序,内存错误