⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 matrix1.h.html

📁 《Big C++ 》Third Edition电子书和代码全集-Part1
💻 HTML
字号:
<html>
<body>
<tt>
<pre>  1  #ifndef MATRIX1_H
  2  #define MATRIX1_H
  3  
  4  #include &lt;iostream&gt;
  5  
  6  using namespace std;
  7  
  8  /**
  9     This class describes a row in a matrix.
 10  */
 11  class Matrix; // Forward definition
 12  class MatrixRow
 13  {
 14  public:
 15     /**
 16        Remember a row for a given matrix
 17        @param m a pointer to the matrix
 18        @param s the size of the row
 19     */
 20     MatrixRow(Matrix* m, int s);
 21  
 22     /**
 23        Accesses a row element.
 24        @param j the column index
 25        @return a reference to the element with the given index
 26     */
 27     double&amp; operator[](int j);
 28  
 29  private:
 30     Matrix* mat;
 31     int i;
 32  };
 33  
 34  /**
 35     This class describes a row in a constant matrix.
 36  */
 37  class ConstMatrixRow
 38  {
 39  public:
 40     /**
 41        Constructs a row with a given start and size.
 42        @param m a pointer to the matrix
 43        @param s the size of the row
 44     */
 45     ConstMatrixRow(const Matrix* m, int s);
 46  
 47     /**
 48        Accesses a row element.
 49        @param j the column index
 50        @return a reference to the element with the given index
 51     */
 52     double operator[](int j) const;
 53  
 54  private:
 55     const Matrix* mat;
 56     int i;
 57  };
 58  
 59  /**
 60     This class describes a 3 x 3 matrix.
 61  */
 62  class Matrix
 63  {
 64  public:
 65     /**
 66        Constructs a matrix filled with zero elements.
 67     */
 68     Matrix();
 69  
 70     /**
 71        Accesses a matrix element.
 72        @param i the row index
 73        @param j the column index
 74        @return a reference to the element with the given indexes
 75     */
 76     double&amp; operator()(int i, int j);
 77  
 78     /**
 79        Accesses a matrix element.
 80        @param i the row index
 81        @param j the column index
 82        @return the element with the given indexes
 83     */
 84     double operator()(int i, int j) const;
 85  
 86     /**
 87        Accesses a matrix row.
 88        @param i the row index
 89        @return the row with the given index
 90     */
 91     MatrixRow operator[](int i);   
 92  
 93     /**
 94        Accesses a matrix row.
 95        @param i the row index
 96        @return the row with the given index
 97     */
 98     ConstMatrixRow operator[](int i) const;
 99  
100     /**
101        Computes the matrix sum
102        @param right another matrix
103        @return the updated matrix
104     */
105     Matrix&amp; operator+=(const Matrix&amp; right);
106  
107     static const int ROWS = 3;
108     static const int COLUMNS = 3;
109  private:
110     double elements[ROWS * COLUMNS];
111  };
112  
113  /**
114     Computes the matrix sum.
115     @param right another matrix
116     @return the sum of two matricies
117  */
118  Matrix operator+(const Matrix&amp; left, const Matrix&amp; right);
119  
120  /**
121     Computes the matrix product.
122     @param right another matrix
123     @return the product of two matricies
124  */
125  Matrix operator*(const Matrix&amp; left, const Matrix&amp; right);
126  
127  /**
128     Computes the scalar product of a scalar value and a matrix.
129     @param left a scalar value
130     @param right a matrix
131     @return the product of the given value and the given matrix
132  */
133  Matrix operator*(double left, const Matrix&amp; right);
134  
135  /**
136     Computes the scalar product of a matrix and a scalar value.
137     @param right a scalar value
138     @return the product of this matrix and the given value
139  */
140  Matrix operator*(const Matrix&amp; left, double right);
141  
142  /**
143     Prints a matrix to an output stream.
144     @param left an output stream
145     @param right a matrix
146     @return the given output stream
147  */
148  ostream&amp; operator&lt;&lt;(ostream&amp; left, const Matrix&amp; right);
149  
150  #endif</pre>
</tt>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -