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

📄 selecttuple.hpp

📁 模糊聚類分析源碼。包含教學文件
💻 HPP
字号:
/*    Context       : Matrix and Vector Operation  Author        : Frank Hoeppner, see also AUTHORS file   Description   : header of class SelectTuple                    History       : see source file  Comment       :     This file was generated automatically. DO NOT EDIT.  Copyright     : Copyright (C) 1999-2000 Frank Hoeppner    This program is free software; you can redistribute it and/or modify    it under the terms of the GNU General Public License as published by    the Free Software Foundation; either version 2 of the License, or    (at your option) any later version.    This program is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    GNU General Public License for more details.    You should have received a copy of the GNU General Public License    along with this program; if not, write to the Free Software    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*/#ifndef SelectTuple_HEADER#define SelectTuple_HEADER/* configuration include */#ifdef HAVE_CONFIG_H/*//FILETREE_IFDEF HAVE_CONFIG_H*/#include "config.h"/*//FILETREE_ENDIF*/#endif// necessary includes#include <iostream.h>#include "define.hpp" // TData#include "matvecop.hpp"#include "trace.hpp" // invariant//#define INLINE inline// global types, constants, definitions// class definitiontemplate <class MATRIX,class SELECT>class SelectTuple    {    public:    typedef typename MATRIX::value_type value_type;    SelectTuple();    SelectTuple(const SelectTuple&);    void operator=(const SelectTuple&);    ~SelectTuple();    inline value_type operator()(const int,const int c=0) const;    inline value_type operator[](const int) const;    inline int rows() const;    inline int cols() const;    void adjust(int, int c=1);     bool operator<(const SelectTuple&) const;    bool operator==(const SelectTuple&) const;    void write(ostream&) const;    SelectTuple(MATRIX&,const SELECT&);      protected:            MATRIX *mp_matrix;    const SELECT *mp_select;  private:                  };// class related functions and definitions/* inline implementation */template <class MATRIX,class SELECT> inline typename MATRIX::value_typeSelectTuple<MATRIX,SELECT>::operator()(const int row,const int col) const   {  invariant    (    (row < ((mp_select->rows()==0) ? mp_matrix->rows() : mp_select->rows())) &&     (col < 1),    "matrix access out of range",    SOURCELOC    );  invariant(col==0,"vector access only",SOURCELOC);  if (mp_select->rows()==0)    {    return mp_matrix->operator()(row,0);    }  else    {    typename MATRIX::value_type value(1);    int index,c(0);    bool cont;    do      {      index = mp_select->operator()(row,c);      cont = ((index>=0) && (index<mp_matrix->rows()));      if (cont)         {         value *= mp_matrix->operator()(index);        ++c;        cont   = c < mp_select->cols();        }      }    while (cont);    return value;    }    }template <class MATRIX,class SELECT> inline typename MATRIX::value_typeSelectTuple<MATRIX,SELECT>::operator[](const int row) const  {  invariant    (    (row < ((mp_select->rows()==0) ? mp_matrix->rows() : mp_select->rows())) &&     (1 == 1),    "vector access out of range",    SOURCELOC    );  if (mp_select->rows()==0)    {    return mp_matrix->operator()(row,0);    }  else    {    typename MATRIX::value_type value(1);    int index,c(0);    bool cont;    do      {      index = mp_select->operator()(row,c);      cont = ((index>=0) && (index<mp_matrix->rows()));      if (cont)         {         value *= mp_matrix->operator()(index);        ++c;        cont   = c < mp_select->cols();        }      }    while (cont);    return value;    }    }  template <class MATRIX,class SELECT> inline intSelectTuple<MATRIX,SELECT>::rows() const   {   return ((mp_select->rows()==0) ? mp_matrix->rows() : mp_select->rows());   }template <class MATRIX,class SELECT> inline intSelectTuple<MATRIX,SELECT>::cols() const   {   return 1;   }template <class MATRIX,class SELECT>inline istream& operator>>  (  istream &is,   SelectTuple<MATRIX,SELECT>& a_var  )   {   a_var.read(is);  return is;   }template <class MATRIX,class SELECT>inline ostream& operator<<  (  ostream &os,   const SelectTuple<MATRIX,SELECT>& a_var  )   {  a_var.write(os);  return os;   }template <class MATRIX,class SELECT>SelectTuple<MATRIX,SELECT> selecttuple  (  MATRIX& a_matrix,  const SELECT& a_select  )  {  return SelectTuple<MATRIX,SELECT>(a_matrix,a_select);  }#endif // SelectTuple_HEADER

⌨️ 快捷键说明

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