//task.5.cpp #include <iostream> #include "vectorInt.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(); }
//hpp #pragma once #include <iostream> using namespace std; class vectorInt{ public: vectorInt(int n); vectorInt(int n,int value); vectorInt( vectorInt& T); ~vectorInt(); int &at(int i); int get_size(); friend void output(vectorInt &T); private: int* p; int size; }; vectorInt::vectorInt(int n):size{n}{ p=new int[n]; for(int i =0 ;i < n;i ++){ p[i]=0; } cout<<"constructor 1 called.\n"; } vectorInt::vectorInt(int n,int value):size{n}{ p=new int[n]; for(int i=0;i<size;++i){ p[i]=value; } cout<<"constructor 2 called.\n"; } vectorInt::vectorInt( vectorInt& T){ this->p=new int[T.size]; this->size=T.size; for(int i=0;i<size;++i){ this->p[i]=T.at(i); } cout<<"copy constructor called.\n"; } int &vectorInt::at(int i){ return p[i]; } int vectorInt::get_size(){ return size; } void output(vectorInt &T){ for(int i=0;i<T.get_size();++i){ cout<<T.at(i)<<", "; } cout<<"\b\b \n"; } vectorInt::~vectorInt(){ delete [] p; cout<<"destructor called.\n"; }
task 6
//cpp #include<iostream> #include"Matrix.hpp" using namespace std; void test() { 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 lint 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(); return 0; }
//hpp #pragma once #include<iostream> using namespace std; class Matrix { public: Matrix(int n); Matrix(int n,int m); Matrix(const Matrix &x); ~Matrix(); void set(const double *pv); void set(int i,int j,int v); double &at(int i,int j); double at(int i,int j)const; int get_lines()const; int get_cols()const; void print()const; // int tolink(int i,int j); 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) { this->p = new double[x.lines * x.cols]; this->lines = x.lines; this->cols = x.cols; int t = 0; for(int i = 0;i < lines ;i ++) for(int j = 0;j < cols ;j ++) p[t ++] = x.at(i,j); } Matrix::~Matrix(){ delete []p; } void Matrix::set(const double *pv) { for(int i = 0;i < lines * cols ;i ++) p[i] = pv[i]; } void Matrix::set(int i,int j,int v) { p[i * cols + j] = v; } 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]; } inline int Matrix ::get_lines()const { return lines; } inline int Matrix :: get_cols()const { return cols; } void Matrix::print()const { for(int i = 0;i < lines;i ++) { for(int j = 0;j < cols;j ++) cout << p[i * cols + j] << " "; cout << endl; } }
标签:const,Matrix,int,lines,cols,实验,vectorInt From: https://www.cnblogs.com/lxyyyds/p/16870889.html