用C++设计数组类模板Array,并实现求范围为2~100的质数,并注释
时间: 2024-02-26 14:52:45 浏览: 66
好的,这里是一个实现求范围为2~100的质数的示例代码,其中包含了C++设计的数组类模板Array的实现:
```c++
#include <iostream>
#include <stdexcept> // 引入异常处理需要的头文件
using namespace std;
template <typename T>
class Array {
private:
T* data; // 数组的数据部分
int size; // 数组的大小
public:
// 构造函数,创建指定大小的数组
Array(int size) {
data = new T[size];
this->size = size;
}
// 析构函数,释放内存
~Array() {
delete[] data;
}
// 获取数组大小
int getSize() const {
return size;
}
// 获取指定位置的元素
T& at(int index) {
if (index < 0 || index >= size) {
throw out_of_range("Index out of range"); // 抛出越界异常
}
return data[index];
}
// 重载下标运算符,方便使用
T& operator [](int index) {
return at(index);
}
};
int main() {
const int N = 100;
Array<bool> is_prime(N + 1, true); // 初始化所有数为质数
is_prime[0] = false;
is_prime[1] = false;
for (int i = 2; i * i <= N; ++i) {
if (is_prime[i]) {
for (int j = i * i; j <= N; j += i) {
is_prime[j] = false;
}
}
}
// 输出范围为2~100的所有质数
for (int i = 2; i <= N; ++i) {
if (is_prime[i]) {
cout << i << " ";
}
}
cout << endl;
return 0;
}
```
这个示例代码中,使用了C++设计的数组类模板Array来存储每个数是否为质数的信息。首先,初始化所有数为质数,然后从2开始枚举每个数,如果这个数是质数,就将它的倍数都标记为合数。最后,输出范围为2~100的所有质数。
需要注意的是,在访问数组元素时,会进行边界检查,如果越界,则会抛出异常。这是为了避免出现越界访问的情况,增强代码的健壮性。
阅读全文