Debug Assertion Failed错误

ma328762444 ma328762444 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

#include<iostream>
using namespace std;
//利用附加数组重排数组元素
template<class T>
void Rearrange(T *&a, int n, int r[])
{//按序重排数组a中的元素,使用附加数组u
T *u = new T[n+1];
//在u中移动到正确的位置
for (int i=0; i<n; i++)
{
u[r[i]] = a[i];
delete []a;
}
//移回到a中
for (int i=0; i<n; i++)
{
a[i] = u[i];
delete []u;
}
};
//计算名次
template<class T>
void Rank(T a[], int n, int r[])
{// Rank the n elements a[0:n-1].
for (int i = 0; i < n; i++)
r[i] = 0; // initialize
// compare all element pairs
// Visual complains if we say int i again
for (int i = 1; i < n; i++)
{
for (int j = 0; j < i; j++)
{
if (a[j] <= a[i]) r[i]++;
else r[j]++;
}
}
};

//Swap函数
template<class T>
inline void Swap(T&a, T&b)
{
T temp = a;
a = b;
b = temp;
};
//主函数
void main()
{
int n = 5;
int *x = new int[5];
int y[5] = {5, 9, 2, 7, 0};
for (int i=0; i<n; i++)
x[i] = y[i];
int r[]={0, 0, 0, 0, 0};
Rank(x, n, r);
cout << "x中各元素的名次为" ;
for (int i=0; i<5; i++)
cout << r[i] << ' ';
Rearrange(x, n, r);
cout << "重排后的数组为";
for (int i=0; i<5; i++)
cout <<r[i] << ' ';
}
调试没错误 运行就出现了如题错误 高手帮忙给改一下 我起初为了使delete []a 的原因 但是去掉那一行错误依旧。希望大家帮忙看一下。
...全文
评论 3
收藏 已收藏
分享
返回顶部
ma328762444
C++ 语言 65,214 成员 250,514 内容