我有一個任務。它說我必須製作這樣的模板功能template <typename T> int reduce(T ar[], int n);
。這個函數確實從最小值到最大值進行排序並刪除相等的值。另外它說我必須使用STL來製作它。我不需要解決方案,只需要建議我應該怎麼做。這是我的解決方案。一條忠告如何實現字符串和long的模板函數,int,double
template <typename T>
int reduce(T ar[], int n)
{
ostream_iterator<int, char> out_iter(cout, " ");
T * iter_begin = ar;
T * iter_end = ar + n;
sort(iter_begin, iter_end);
copy(iter_begin, iter_end, out_iter);
cout << endl;
iter_end = unique(iter_begin, iter_end);
copy(iter_begin, iter_end, out_iter);
//erase(iter_begin, iter_end);
return 0;
}
void main()
{
srand((unsigned)time(NULL));
int size = 20;
long * mas = new long[size];
for (int i = 0; i < size; i++)
mas[i] = rand() % size + 1;
reduce(mas, size);
string str = "hello how are you doing";
reduce(&str, str.length());
delete[] mas;
}
什麼在您的解決方案中不起作用? – Slava
@Slava VS說錯誤在'sort()'中,如果我使用'std :: string' – Mikhail
'string str =「你好,你好嗎」; reduce(&str,str.length());'不是你想要的。你告訴它你正在傳遞一個'string'對象的數組,它的長度是'str.length()',但是你真的把它傳遞給了一個'string'的指針。 – Chad