设计一个数组类模板,该模板至少包含对数组元素的初始化、输出所有数组元素、输入所有数组元素、求某一个数组元素、修改某一个数组元素、求数组元素个数,对数组元素进行排序。设计一个自定义类并重载必要的输入输出运算符函数以实例化该模板测试其相关功能
时间: 2024-01-13 09:05:47 浏览: 62
一维数组类模板的设计与实现
5星 · 资源好评率100%
好的,我可以为您设计一个更完整的数组类模板,包含对数组元素的初始化、输出所有数组元素、输入所有数组元素、求某一个数组元素、修改某一个数组元素、求数组元素个数、对数组元素进行排序等功能。同时,我也会为您设计一个自定义类,并重载必要的输入输出运算符函数以实例化该模板并测试相关功能。
下面是一个示例代码,其中包含了您所需的所有功能:
```cpp
#include <iostream>
#include <algorithm>
template <typename T, int N>
class Array {
public:
Array() {
for (int i = 0; i < N; i++) {
data[i] = T();
}
}
Array(const T& value) {
for (int i = 0; i < N; i++) {
data[i] = value;
}
}
void print() const {
for (int i = 0; i < N; i++) {
std::cout << data[i] << " ";
}
std::cout << std::endl;
}
void input() {
for (int i = 0; i < N; i++) {
std::cin >> data[i];
}
}
T get(int index) const {
if (index < 0 || index >= N) {
throw std::out_of_range("index out of range");
}
return data[index];
}
void set(int index, const T& value) {
if (index < 0 || index >= N) {
throw std::out_of_range("index out of range");
}
data[index] = value;
}
int size() const {
return N;
}
void sort() {
std::sort(data, data + N);
}
private:
T data[N];
};
class Person {
public:
friend std::ostream& operator<<(std::ostream& os, const Person& p) {
os << p.name << " " << p.age;
return os;
}
friend std::istream& operator>>(std::istream& is, Person& p) {
is >> p.name >> p.age;
return is;
}
private:
std::string name;
int age;
};
int main() {
// 测试整型数组
std::cout << "Testing integer array:" << std::endl;
Array<int, 5> arr1;
arr1.print();
arr1.input();
arr1.print();
std::cout << "Element at index 2: " << arr1.get(2) << std::endl;
arr1.set(2, 42);
arr1.print();
std::cout << "Array size: " << arr1.size() << std::endl;
arr1.sort();
arr1.print();
// 测试自定义类数组
std::cout << "Testing Person array:" << std::endl;
Array<Person, 3> arr2;
arr2.input();
arr2.print();
std::cout << "Element at index 1: " << arr2.get(1) << std::endl;
arr2.set(1, Person{"Alice", 20});
arr2.print();
std::cout << "Array size: " << arr2.size() << std::endl;
arr2.sort();
arr2.print();
return 0;
}
```
这个示例代码包含了一个名为 `Array` 的数组类模板和一个名为 `Person` 的自定义类。在 `Array` 类模板中,我们提供了对数组元素的初始化、输出所有数组元素、输入所有数组元素、求某一个数组元素、修改某一个数组元素、求数组元素个数、对数组元素进行排序等功能。在 `Person` 类中,我们重载了输入输出运算符函数,以便在 `Array` 类模板中使用。
在主函数中,我们首先创建了一个包含 5 个整型元素的数组,测试了它的所有功能;然后创建了一个包含 3 个 `Person` 类型元素的数组,同样测试了它的所有功能。
您可以将这个示例代码复制到您的编译器中进行编译和运行,以了解更多信息。
阅读全文