读书人

求教于网上看的回答千奇百怪请教小

发布时间: 2012-06-13 12:30:18 作者: rapoo

求教,于网上看的回答千奇百怪,请问我这里调用模版 错在哪里?
#include <iostream>
using namespace std;
template <class elem>
void swap (elem a[], int i, int j)
{
elem temp = elem[i];
elem[i] = elem[j];
elem[j] = elem temp;
}
template <class elem>
void inssort (elem a[], int size)
{
for( int i = 1; i<n ; i++)
{
for ( int j = i -1; j>=0; j--)
{
if ( a[j] > a[j+1])
{
swap( a, j, j+1);
}
}
}
}
int main()
{
int shuzu [5] = {1,3,5,4,2};
int s = 5;
inssort <int>( shuzu [5],s);
for ( int temp = 0; temp< 5; temp ++)
{
cout<< shuzu [temp]<<endl;
}
}

[解决办法]
template <class elem>
void swap (elem a[], int i, int j)
{
elem temp = elem[i];
elem[i] = elem[j];
elem[j] = elem temp;
}

模板相当于自动替换类型
当传入int数组时,这段代码被替换为以下代码

void swap (int a[], int i, int j)
{
int temp = int[i];
int[i] = int[j];
int[j] = int temp;
}

楼主你自己觉得这段代码能通过编译吗?
[解决办法]
既然觉得网上的代码千奇百怪,就去看看经典教材上的例子
想当然的写代码,能通过编译那真是运气好
[解决办法]

C/C++ code
#include <iostream>using namespace std;template <class elem>void swap (elem a[], int i, int j){    elem temp = a[i];    a[i] = a[j];    a[j] = temp;}template <class elem>void inssort (elem a[], int size){    for( int i = 1; i<size ; i++)    {        for ( int j = i -1; j>=0; j--)        {            if ( a[j] > a[j+1])            {                swap( a, j, j+1);            }        }    }}int main(){    int shuzu [5] = {1,3,5,4,2};    int s = 5;    inssort <int>( shuzu,s);    for ( int temp = 0; temp< 5; temp ++)    {        cout<< shuzu [temp]<<endl;    }} 

读书人网 >C++

热点推荐