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

📄 mtl_exception.h

📁 强大的矩阵模版类
💻 H
字号:
#ifndef MTL_EXCEPTION_H#define MTL_EXCEPTION_H#if MTL_EXCEPTIONS#include <exception>#include <string>namespace mtl {/**  The assertion class defines the type of exception that MTL functions  will throw. Typically the assertions deal with the sizes of the  vectors and or matrices being compatible. By default the exception  handling is turned {\em off}. To compile with the exception  handling turned {\em on}, define the macro, -DMTL\_EXCEPTIONS=1.  Note that you need not put a {\tt try} and {\tt catch} around  each MTL function call. A better style is to make your whole  function (perhaps with many calls to MTL) a {\tt try} clause.  This way the exception handling code does not interfere with  the readability of your algorithm. In addition, this will  result in your having to write fewer {\tt try} and {\tt catch}  clauses.    \begin{verbatim}  try {    mtl::dense1D<double> x(20, 2);    mtl::dense1D<double> y(10, 3);    mtl::dense1D<double> z(10);        vecvec::add(x, y, z);        mtl::print_vector(z);  }  catch(mtl::assertion e) {    cerr << e.what() << endl;  }  > mtl assertion: x.size() <= y.size() failed in vecvec::add()  \end{verbatim}  @memo Assertion Exception Class*/class assertion : public std::exception {public:  assertion(const char* assertion, const char* function) {    desc_ = "mtl assertion: ";    desc_ += assertion;    desc_ += " failed in ";    desc_ += function;  }  virtual ~assertion() throw() { }  virtual const char* what() const throw() { return desc_.c_str(); }protected:  std::string desc_;};} /* namespace mtl */#endif#if MTL_EXCEPTIONS#define MTL_THROW_ASSERTION    throw(mtl::assertion)#define MTL_ASSERT(X,Y)        if (!(X)) { throw mtl::assertion(#X,Y); }#define MTL_THROW(X)           throw(X)#else#define MTL_THROW_ASSERTION    /* nothing */#define MTL_ASSERT(X,Y)        /* nothing */#define MTL_THROW(X)           /* nothing */#endif#endif

⌨️ 快捷键说明

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