求教,于网上看的回答千奇百怪,请问我这里调用模版 错在哪里?
#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; }}