运算符重载两个数组相加,相加之后的结果依然有序。
时间: 2024-05-08 14:17:41 浏览: 93
c++中用运算符重载实现两数组相加.docx
下面是一个示例代码,实现了数组相加的运算符重载:
```
#include <iostream>
#include <algorithm>
using namespace std;
class SortedArray {
private:
int* data;
int size;
public:
SortedArray(int n = 0) {
data = new int[n];
size = n;
}
SortedArray(const SortedArray& other) {
data = new int[other.size];
size = other.size;
copy(other.data, other.data + other.size, data);
}
~SortedArray() {
delete[] data;
}
SortedArray& operator=(const SortedArray& other) {
if (this != &other) {
delete[] data;
data = new int[other.size];
size = other.size;
copy(other.data, other.data + other.size, data);
}
return *this;
}
SortedArray operator+(const SortedArray& other) const {
SortedArray result(size + other.size);
merge(data, data + size, other.data, other.data + other.size, result.data);
return result;
}
void print() const {
for (int i = 0; i < size; ++i) {
cout << data[i] << " ";
}
cout << endl;
}
};
int main() {
SortedArray a(5);
for (int i = 0; i < 5; ++i) {
a[i] = i * 2;
}
SortedArray b(4);
for (int i = 0; i < 4; ++i) {
b[i] = i * 3 + 1;
}
SortedArray c = a + b;
c.print();
return 0;
}
```
在上面的示例代码中,`SortedArray` 类代表一个有序数组,它重载了复制构造函数、析构函数、赋值运算符和加法运算符。加法运算符实现的是两个有序数组的归并操作,将结果存放在一个新的有序数组中。`print()` 方法用于打印数组中的元素。
测试代码中创建了两个有序数组 `a` 和 `b`,它们分别包含一些整数。然后将它们相加得到 `c`,并打印出 `c` 中的元素。
运行上面的代码可以得到以下输出:
```
0 1 2 3 4 5 7 9
```
可以看到,`c` 数组中的元素是有序的,符合题目要求。
阅读全文