#include <iostream>
#include <cstdint>
using namespace std;
class SensorBuffer {
private:
uint8_t* data;
int size;
public:
// Constructor: allocate buffer
// Destructor: free buffer
// Copy assignment operator: perform deep copy
SensorBuffer(int s) {
size = s;
data = new uint8_t[size];
}
~SensorBuffer() {
delete[] data;
}
SensorBuffer& operator=(const SensorBuffer& other) {
if (this == &other) {
return *this;
}
delete[] data;
size = other.size;
data = new uint8_t[size];
for (int i=0; i<size; i++) {
data[i] = other.data[i];
}
return *this;
}
void set(int index, uint8_t value) {
data[index] = value;
}
void print() const {
for (int i = 0; i < size; i++) {
cout << (int)data[i];
if (i != size - 1) cout << " ";
}
}
};
int main() {
int N1, N2;
cin >> N1;
SensorBuffer A(N1);
for (int i = 0; i < N1; i++) {
int temp;
cin >> temp;
A.set(i, (uint8_t)temp);
}
cin >> N2;
SensorBuffer B(N2);
for (int i = 0; i < N2; i++) {
int temp;
cin >> temp;
B.set(i, (uint8_t)temp);
}
A = B; // Deep copy must occur here
A.print();
return 0;
}
Input
4 10 20 30 40 4 1 1 1 1
Expected Output
1 1 1 1