我正在嘗試執行需要實現不同排序算法的算法類的項目。我想要使用模板類聲明一個數組,如圖所示。我必須保持函數定義相同,因此不能更改任何參數。我的問題是我的數組聲明,我得到的錯誤「非類型模板參數是一個非常量表達式。」聲明模板數組的正確方法是什麼?任何幫助將不勝感激。模板類數組
#ifndef __SORTING_HPP
#define __SORTING_HPP
#include "SortingHelper.h"
#include <iostream>
template <class T>
class Sorting
{
public:
T selectionsort(T* data, int size);
T insertionsort(T* data, int size);
T mergesort(T* data, int size, T* temp);
T quicksort(T* data, int size);
T data;
};
template <class T> void selectionsort(T* data, int size)
{
std::array<T*, size> myarray = data;
int min = 0;
int temp = 0;
if (isSorted(data, size))
{
return *data;
}
else
{
for (int i=0; i < size - 1; i++)
{
min = i;
for (int j=i+1; j < size; j++)
{
if (data[j] < data[min])
min= j;
}
if (min != i)
{
temp = data[i];
data[i] = data[min];
data[min] = temp;
}
}
}
}
#endif
變化 模板無效選擇排序(T *數據,INT大小) 模板無效排序::選擇排序(T *數據,INT大小) –
嗯......但現在我得到「排序不是類,名稱空間或枚舉「 – IronCode
'std :: array'對我來說看起來很奇怪。難道你不是指'std :: array '?你真的想要一個指針數組嗎? –
PaulMcKenzie