设计一个一维数组类onedim,实现数组的初始化、赋值、打印和数据清空操作,并在主函数中构造一个onedim对象对类进行测试,使它成为一个类模板,并在主函数中实例化2种不同用法。
时间: 2023-06-25 12:03:54 浏览: 57
以下是一维数组类onedim的实现:
```c++
#include <iostream>
#include <cstring>
using namespace std;
template<typename T>
class onedim {
private:
T *arr;
int size;
public:
onedim(int s) : size{s} {
arr = new T[size];
}
~onedim() {
delete[] arr;
}
void initialize() {
for (int i = 0; i < size; i++) {
arr[i] = 0;
}
}
void assign(T *data) {
memcpy(arr, data, size * sizeof(T));
}
void print() {
for (int i = 0; i < size; i++) {
cout << arr[i] << " ";
}
cout << endl;
}
void clear() {
memset(arr, 0, size * sizeof(T));
}
};
```
在主函数中,我们可以这样实例化和测试:
```c++
int main() {
int data1[] = {1, 2, 3, 4, 5};
onedim<int> arr1(5);
arr1.assign(data1);
arr1.print();
arr1.clear();
arr1.print();
double data2[] = {1.1, 2.2, 3.3, 4.4, 5.5};
onedim<double> arr2(5);
arr2.initialize();
arr2.print();
arr2.assign(data2);
arr2.print();
arr2.clear();
arr2.print();
return 0;
}
```
输出:
```
1 2 3 4 5
0 0 0 0 0
0 0 0 0 0
1.1 2.2 3.3 4.4 5.5
0 0 0 0 0
```