实验任务5
#pragma once #include<iostream> #include<cassert> using namespace std; class vectorInt { public: vectorInt(int n); vectorInt(int n, int value); vectorInt(const vectorInt&); ~vectorInt(); int& at(int t) { return p[t]; } int get_size() { return size; } friend void output(vectorInt& p1); private: int size; int* p; }; vectorInt::vectorInt(int n) :size{ n } { cout << "constructor 1 called" << endl; p = new int[n]; } vectorInt::vectorInt(int n, int value) :size{ n } { cout << "constructor 2 called" << endl; p = new int[n]; for (auto i = 0; i < n; i++) { p[i] = value; } } vectorInt::vectorInt(const vectorInt& vi) :size{ vi.size } { p = new int[size]; cout << "copy constructor called." << endl; for (auto i = 0; i < vi.size; i++) { p[i] = vi.p[i]; } } void output(vectorInt& p1) { for (auto i = 0; i < p1.size - 1; ++i) { cout << p1.at(i) << ","; } cout << p1.at(p1.size - 1) << endl; } vectorInt::~vectorInt() { cout << "destructor called." << endl; delete[] p; }
#include<iostream> #include"标头.hpp" void test() { using namespace std; int n; cin >> n; vectorInt x1(n); for (auto i = 0; i < n; ++i) x1.at(i) = i * i; output(x1); vectorInt x2(n, 42); vectorInt x3{ x2 }; output(x2); output(x3); x2.at(0) = 77; output(x2); output(x3); } int main() { test(); }
实验任务6
#pragma once #include<iostream> using std::cout; using std::endl; class Matrix { public: Matrix(int n); Matrix(int n, int m); Matrix(const Matrix& x); ~Matrix(); void set(const double* pvalue); void set(int i, int j, int value); double& at(int i, int j); double at(int i, int j) const; int get_lines() const; int get_cols() const; void print() const; private: int lines; int cols; double* p; }; Matrix::Matrix(int n) :lines{ n }, cols{ n } { p = new double[n * n]; } Matrix::Matrix(int n, int m) :lines{ n }, cols{ m } { p = new double[n * m]; } Matrix::Matrix(const Matrix& x) { lines = x.lines; cols = x.cols; p = new double[lines * cols]; for (int i = 0; i < lines; i++) { for (int j = 0; j < cols; j++) { p[i * cols + j] = x.p[i * cols + j]; } } } Matrix::~Matrix() { delete[] p; } void Matrix::set(const double* pvalue) { for (int i = 0; i < lines; i++) { for (int j = 0; j < cols; j++) { p[i * cols + j] = *pvalue; pvalue++; } } } void Matrix::set(int i, int j, int value) { p[i * cols + j] = value; } double& Matrix::at(int i, int j) { return p[i * cols + j]; } double Matrix::at(int i, int j)const { return p[i * cols + j]; } int Matrix::get_lines()const { return lines; } int Matrix::get_cols()const { return cols; } void Matrix::print()const { for (int i = 0; i < lines; i++) { for (int j = 0; j < cols - 1; j++) { cout << p[i * cols + j] << ","; } cout << p[i * cols + cols - 1] << endl; } }
#include<iostream> #include"标头.hpp" void test() { using namespace std; double x[] = { 1,2,3,4,5,6 }; Matrix m1(3, 2); m1.set(x); m1.print(); cout << "the first line is: " << endl; cout << m1.at(0, 0) << " " << m1.at(0, 1) << endl; cout << endl; Matrix m2(2, 3); m2.set(x); m2.print(); cout << "the first line is: " << endl; cout << m2.at(0, 0) << " " << m2.at(0, 1) << " " << m2.at(0, 2) << endl; cout << endl; Matrix m3(m2); m3.set(0, 0, 999); m3.print(); } int main() { test(); }
标签:const,Matrix,int,lines,cols,实验,vectorInt From: https://www.cnblogs.com/zqpqaz151034/p/16862902.html