📄 vector.cpp
字号:
// ENERGY211/CME211// // vector.cpp - Implementation file for Project 1//#include <iostream>#include "vector.h" // Must include corresponding header file#include <cmath>using namespace std;////////////////////////////////////////////////////////////// Implementation of ColVector class////////////////////////////////////////////////////////////ColVector::ColVector( int rows, double *data ) : Matrix( rows, 1, data ){}ColVector::ColVector( const ColVector& v ) : Matrix( v ){}ColVector::ColVector( const Matrix& A ){ m_rows = A.get_rows(); Reshape( A, A.get_rows() * A.get_cols(), 1 );}ColVector::~ColVector(){}ColVector& ColVector::operator=( const Matrix& A ){ if ( A.get_cols() > 1 ) ReportError( ERROR_SIZE_MISMATCH ); std::cout << "ColVector::operator=" << endl; Set(A); m_dummy = 1; return *this;}//ColVector& ColVector::operator=( const ColVector& A )//{// std::cout << "ColVector::operator=" << endl;// Set(A);// return *this;//}double& ColVector::operator[]( int i ) const{ if ( i < 0 || i > m_rows ) ReportError(ERROR_INVALID_INDEX); return m_rowdata[i][0];}ColVector ColVector::operator[]( Range r ) const{ if ( r.get_row2() == -1 ) r.set_row2(m_rows - 1); if ( r.get_row1() < 0 || r.get_row1() >= m_rows ) ReportError( ERROR_INVALID_INDEX ); if ( r.get_row2() < 0 || r.get_row2() >= m_rows ) ReportError( ERROR_INVALID_INDEX ); if ( r.get_row1() > r.get_row2() ) ReportError( ERROR_INVALID_RANGE ); ColVector v; v.m_rows = r.get_row2() - r.get_row1() + 1; v.m_cols = 1; v.m_data = m_data; v.m_rowdata = new double *[v.m_rows]; for ( int i = 0; i < v.m_rows; i++ ) v.m_rowdata[i] = (double *) ( m_data + ( i + r.get_row1() ) * m_cols ); v.m_issubmatrix = true; return v;}double ColVector::norm( const ColVector& v, int p ) { double sum = 0.0; for ( int i = 0; i < v.length(); i++ ) sum += pow( abs( v[i] ), p ); return pow( sum, 1.0 / p );}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -