Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Объекты и указатели - 2*/
- /*
- Дополните класс SimpleVector из предыдущей задачи, методом refill, который принимает другой экземпляр SimpleVector и заполняет принимающий объект данными из переданного.
- Дополнительно, конструктор копирования должен вывести "memory allocate from copy"
- */
- #include <iostream>
- #include <string>
- using namespace std;
- class SimpleVector {
- int* _data;
- int _len;
- public:
- SimpleVector(int len) {
- cout << "memory allocate" << endl;
- _len = len;
- _data = new int[_len];
- }
- SimpleVector(const SimpleVector& sv) {
- cout << "memory allocate from copy" << endl;
- _len = sv._len;
- _data = new int[_len];
- for (int i = 0; i < _len; i++)
- _data[i] = sv._data[i];
- }
- ~SimpleVector() {
- if (_len != 0) {
- delete[] _data;
- _len = 0;
- cout << "memory clear" << endl;
- }
- }
- void set(int idx, int val) {
- _data[idx] = val;
- }
- void print() {
- cout << _data[0];
- for (int i = 1; i < _len; i++) {
- cout << " " << _data[i];
- }
- cout << endl;
- }
- void reverse() {
- for (int i = 0; i < _len / 2; i++) {
- swap(_data[i], _data[_len - i - 1]);
- }
- }
- void read() {
- for (int i = 0; i < _len; i++) {
- int x;
- cin >> x;
- set(i, x);
- }
- }
- // сделать копию переданного массива
- void refill(SimpleVector sv) {
- _len = sv._len;
- delete[] _data;
- _data = new int[_len];
- for (int i = 0; i < _len; i++) {
- _data[i] = sv._data[i];
- }
- }
- };
- int main() {
- int len;
- cin >> len;
- SimpleVector sv1(len);
- sv1.read();
- SimpleVector sv2(len);
- sv2.read();
- sv2.refill(sv1);
- sv1.print();
- sv2.print();
- }
- /*
- Тест 1
- Ввод:
- 7
- 7 7 7 0 0 0 9
- 12
- 8 1 8 3 8 5 6 7 3 4 5 6
- Вывод:
- memory allocate
- memory allocate
- memory allocate from copy
- memory clear
- 7 7 7 0 0 0 9
- 7 7 7 0 0 0 9
- memory clear
- memory clear
- Тест 2
- Ввод:
- 15
- 7 0 4 5 9 3 4 9 5 2 2 4 6 3 2
- 5
- 4 5 6 7 1
- Вывод:
- memory allocate
- memory allocate
- memory allocate from copy
- memory clear
- 7 0 4 5 9 3 4 9 5 2 2 4 6 3 2
- 7 0 4 5 9 3 4 9 5 2 2 4 6 3 2
- memory clear
- memory clear
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement