一个C++小问题 3

来源:百度知道 编辑:UC知道 时间:2024/06/22 21:56:47
设计模板函数 void sortp(const T d[],T *pd[],int size),其中的T是表示虚拟类型的模板参数,size是数组d及pd的元素个数。sortp用选择法对数组d中的数据进行排序,排序结果记录在指针数组pd中。也就是说,完成排序后,通过*pd[0],*pd[1],*pd[2]...即可访问到作为排序结果的由小到大的数据序列。
fengjian_net兄台的程序好像不对,我运行了下,什么都没有~
sort(p, p+(size-1)); 好像错了,但我还不知道怎么改。。。。。

#include <iostream>
#include <algorithm>

using namespace std;

template<typename T>
void sortp(const T d[],T *pd[],int size)
{
pd = new T* [size];
T* p = new T [size];
for(int i = 0; i < size; ++i)
{
p[i] = d[i];
pd[i] = new T;
pd [i] = & p[i];
}
sort(p, p+(size-1));
}

int main(int argc, char *argv[])
{
int a[10] = { 1, 0, 2, 4, 6, 5, 9, 8, 10, 3};
int **p;
sortp(a, p, 10);
for(int i = 0; i < 10; ++i)
cout<<*p[i]<<endl;
return 0;
}