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

📄 matrix.h

📁 图像分割算法
💻 H
📖 第 1 页 / 共 2 页
字号:
			{
				output << "ROW" << right << setw(rowNoWidth) << i+1 << "|";
				for(int j=0;j<m.Columns();j++)
				{
					output << right << setw(columnWidth) << m.ElemNC(i,j);
				}
				output << endl;
			}
		}
		else
		{
			int groups = m.Columns()/columnMax;
			int leftover = m.Columns() % columnMax;
			for(int k=0; k<groups; k++)
			{
				output << endl;
				output << "----------------------" << endl;
				output << "Columns " << k*columnMax+1 << " through " << k*columnMax+columnMax-1+1 << endl;
				output << "----------------------" << endl;
				for(int i=0;i<m.Rows();i++)
				{
					output << "ROW" << right << setw(rowNoWidth) << i+1 << "|";
					for(int j=columnMax*k;j<columnMax*(k+1);j++)
					{
						output << right << setw(columnWidth) << m.ElemNC(i,j);
					}
					output << endl;
				}
			}
			if(leftover > 0)
			{
				output << endl;
				output << "----------------------" << endl;
				output << "Columns " << groups*columnMax+1 << " through " << groups*columnMax+leftover-1+1 << endl;
				output << "----------------------" << endl;
				for(int i=0;i<m.Rows();i++)
				{
					output << "ROW" << right << setw(rowNoWidth) << i+1 << "|";
					for(int j=groups*columnMax;j<groups*columnMax+leftover;j++)
					{
						output << right << setw(columnWidth) << m.ElemNC(i,j);
					}
					output << endl;
				}
			}
		}
		output << "=======================" << endl;
		output << endl;
		
		return output;
	}


	T& Coor(const int x, const int y);
	T& CoorNC(const int x, const int y); // No bounds check
	T& Elem(const int _row, const int _col);
	T& ElemNC(const int _row, const int _col); // No bounds check
	T& Elem(const int i);
	T& ElemNC(const int i); // No bounds check

	T& operator() (const int i);
	T& operator() (const int i, const int j);
	Vector<T>& operator[] (const int i);
	
	/// \brief returns a new Matrix using the slice rectangle.
	//Matrix<T> operator() (const int row1, const int row2, const int col1, const int col2);
	SubMatrix<T> operator() (const int row1, const int row2, const int col1, const int col2);

	/// \brief returns a new Matrix using the slice rectangle.
	//Matrix<T> operator() (string str1, string str2);
	SubMatrix<T> operator() (string str1, string str2);
	Vector<T> operator() (string str);

	/// Matrix to Matrix multiplication
	friend Matrix<T> operator& (Matrix<T>& m1, Matrix<T>& m2)
	{
		return Matrix<T>::MMultiply(m1, m2);
	}
	
	/// Matrix to column Vector multiplication
	friend Matrix<T> operator& (Matrix<T>& m1, Vector<T>& m2)
	{
		return Matrix<T>::MMultiply(m1, m2);
	}

	/// Row Vector to Matrix multiplication
	friend Matrix<T> operator& (Vector<T>& m1, Matrix<T>& m2)
	{
		return Matrix<T>::MMultiply(m1, m2);
	}


	// Boolean operations
	friend Matrix<int> operator&& (Matrix<T>& m1, Matrix<T>& m2)
	{
		return Matrix<T>::And(m1, m2);
	}

	friend Matrix<int> operator|| (Matrix<T>& m1, Matrix<T>& m2)
	{
		return Matrix<T>::Or(m1, m2);
	}

	friend Matrix<int> operator< (Matrix<T>& m1, Matrix<T>& m2)
	{
		return Matrix<T>::Lt(m1, m2);
	}

	friend Matrix<int> operator> (Matrix<T>& m1, Matrix<T>& m2)
	{
		return Matrix<T>::Gt(m1, m2);
	}

	friend Matrix<int> operator<= (Matrix<T>& m1, Matrix<T>& m2)
	{
		return Matrix<T>::Le(m1, m2);
	}

	friend Matrix<int> operator>= (Matrix<T>& m1, Matrix<T>& m2)
	{
		return Matrix<T>::Ge(m1, m2);
	}

	friend Matrix<int> operator== (Matrix<T>& m1, Matrix<T>& m2)
	{
		return Matrix<T>::Eq(m1, m2);
	}

	friend Matrix<int> operator!= (Matrix<T>& m1, Matrix<T>& m2)
	{
		return Matrix<T>::Ne(m1, m2);
	}


	// Boolean operations with value type
	friend Matrix<int> operator&& (Matrix<T>& m, T v)
	{
		return Matrix<T>::And(m, v);
	}
	friend Matrix<int> operator&& (T v, Matrix<T>& m)
	{
		return Matrix<T>::And(m, v);
	}

	friend Matrix<int> operator|| (Matrix<T>& m, T v)
	{
		return Matrix<T>::Or(m, v);
	}
	friend Matrix<int> operator|| (T v, Matrix<T>& m)
	{
		return Matrix<T>::Or(m, v);
	}

	friend Matrix<int> operator< (Matrix<T>& m, T v)
	{
		return Matrix<T>::Lt(m, v);
	}
	friend Matrix<int> operator< (T v, Matrix<T>& m)
	{
		return Matrix<T>::Gt(m, v);
	}

	friend Matrix<int> operator> (Matrix<T>& m, T v)
	{
		return Matrix<T>::Gt(m, v);
	}
	friend Matrix<int> operator> (T v, Matrix<T>& m)
	{
		return Matrix<T>::Lt(m, v);
	}

	friend Matrix<int> operator<= (Matrix<T>& m, T v)
	{
		return Matrix<T>::Le(m, v);
	}
	friend Matrix<int> operator<= (T v, Matrix<T>& m)
	{
		return Matrix<T>::Ge(m, v);
	}

	friend Matrix<int> operator>= (Matrix<T>& m, T v)
	{
		return Matrix<T>::Ge(m, v);
	}
	friend Matrix<int> operator>= (T v, Matrix<T>& m)
	{
		return Matrix<T>::Le(m, v);
	}

	friend Matrix<int> operator== (Matrix<T>& m, T v)
	{
		return Matrix<T>::Eq(m, v);
	}
	friend Matrix<int> operator== (T v, Matrix<T>& m)
	{
		return Matrix<T>::Eq(m, v);
	}

	friend Matrix<int> operator!= (Matrix<T>& m, T v)
	{
		return Matrix<T>::Ne(m, v);
	}
	friend Matrix<int> operator!= (T v, Matrix<T>& m)
	{
		return Matrix<T>::Ne(m, v);
	}








// Add matrix to another matrix
	friend Matrix<T> operator+ (Matrix<T>& m1, Matrix<T>& m2)
	{
		return Matrix<T>::Add(m1, m2);
	}

	friend Matrix<T> operator- (Matrix<T>& m1, Matrix<T>& m2)
	{
		return Matrix<T>::Subtract(m1, m2);
	}

	friend Matrix<T> operator* (Matrix<T>& m1, Matrix<T>& m2)
	{
		return Matrix<T>::Multiply(m1, m2);
	}

	friend Matrix<T> operator/ (Matrix<T>& m1, Matrix<T>& m2)
	{
		return Matrix<T>::Divide(m1, m2);
	}


// Add value to another matrix
	friend Matrix<T> operator+ (Matrix<T>& m, T v)
	{
		return Matrix<T>::Add(m, v);
	}

	friend Matrix<T> operator+ (T v, Matrix<T>& m)
	{
		return Matrix<T>::Add(m, v);
	}

	friend Matrix<T> operator- (Matrix<T>& m, T v)
	{
		return Matrix<T>::Subtract(m, v);
	}

	friend Matrix<T> operator- (T v, Matrix<T>& m)
	{
		return Matrix<T>::Subtract(v, m);
	}

	friend Matrix<T> operator* (Matrix<T>& m, T v)
	{
		return Matrix<T>::Multiply(m, v);
	}

	friend Matrix<T> operator* (T v, Matrix<T>& m)
	{
		return Matrix<T>::Multiply(m, v);
	}

	friend Matrix<T> operator/ (Matrix<T>& m, T v)
	{
		return Matrix<T>::Divide(m, v);
	}

	friend Matrix<T> operator/ (T v, Matrix<T>& m)
	{
		return Matrix<T>::Divide(v, m);
	}




// Add inline
	Matrix<T>& operator+= (Matrix<T>& m);
	Matrix<T>& operator-= (Matrix<T>& m);
	Matrix<T>& operator*= (Matrix<T>& m);
	Matrix<T>& operator/= (Matrix<T>& m);

	Matrix<T>& operator+= (T v);
	Matrix<T>& operator-= (T v);
	Matrix<T>& operator*= (T v);
	Matrix<T>& operator/= (T v);

	
// TYPE CONVERSIONS
	//Matrix(Array<T> &m);
	Matrix(Vector<T> &m);
	Matrix(SubMatrix<T> &m);


};

#include "./Matrix.inl"



}; //namespace


#endif












⌨️ 快捷键说明

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