模板類設計
template <typename T>
class Array {
T* data;
int size;
public:
Array(int n) : size(n) { data = new T[size]; }
~Array() { delete[] data; }
T& operator[](int i) { return data[i]; }
int getSize() const { return size; }
void sort() { std::sort(data, data + size); }
int find(const T& val) const { // 返回索引或 -1
for (int i = 0; i < size; ++i)
if (data[i] == val) return i;
return -1;
}
T sum() const {
T total = T(); // 值初始化 (0/0.0)
for (int i = 0; i < size; ++i) total += data[i];
return total;
}
};
實例化使用
int main() {
Array<int> arrInt(5);
arrInt[0]=3; arrInt[1]=1; arrInt[2]=4; arrInt[3]=2; arrInt[4]=5;
arrInt.sort(); // 1 2 3 4 5
cout << "sum: " << arrInt.sum() << endl; // 15
cout << "find 3: " << arrInt.find(3) << endl; // 2
Array<double> arrD(3);
arrD[0]=1.1; arrD[1]=2.2; arrD[2]=3.3;
cout << "sum double: " << arrD.sum() << endl; // 6.6
return 0;
}
參考資源
C++ 類模板數組操作完整例題