テンプレートを使用して、最小の配列から最大の配列に異なる種類の配列を並べ替えることを試みています。テンプレートを使用して文字列と文字を並べ替える
正しく並べ替えるためにint配列を取得しましたが、並べ替えから文字配列または文字列配列を取得できませんでした。私は "bsort(char [10]、int)"と "bsort(std :: string [10]、int)への呼び出しに一致する関数がありません"というエラーが出てきました。私は間違って何をしていますか?
私のテンプレートでは、 "Object"宣言によってすべての異なる型に対応していると思いました。
#include <iostream>
#include <string>
using namespace std;
template <class Object>
void bsort(Object a[], Object n)
{
for (int i=0; i<n-1; i++)
{
for (int j=i+1; j<n; j++)
{
if(a[i]>a[j])
{
Object item;
item=a[i];
a[i]=a[j];
a[j]=item;
}
}
}
}
int main()
{
int intarray[10]= {50, 10, 20, 15, 62, 32, 6, 80, 90, 100};
char chararray[10]= {'a', 'f', 'v', 'b', 'c', 's', 'm', 'i', 'j', 'i'};
string stringarray[10]= {"hi", "how", "are", "you", "today", "love", "eating", "food", "brownies", "icecream"};
cout<<"The intarray consists of"<<endl;
for (int i=0; i<10; i++)
cout<<intarray[i]<<endl;
cout<<"The sorted intarray sorted is"<<endl;
bsort(intarray, 10);
for (int i=0; i<10; i++)
cout<<intarray[i]<<endl;
cout<<"Sorted char array"<<endl;
bsort(chararray, 10);
for (int i=0; i<10; i++)
cout<<chararray[i]<<endl;
cout<<"The sorted stringarray is"<<endl;
bsort(stringarray, 10);
for (int i=0; i<10; i++)
cout<<stringarray[i]<<endl;
return 0;
}
**編集、私が最初に[]という試みたが、それはまだそれが必要私に
さらに、 'template void bsort(ITERATOR begin、ITERATOR end)' –
SergeyA
@SergeyA:あるいはもっとうまく 'std :: sort'を直接使う:-) – Jarod42