📄 iterator.h
字号:
/* -*- c++ -*- ****************************** * Scientific Library (GNU Public Licence) * * Author: Laurent Deniau, Laurent.Deniau@cern.ch * * $Id: iterator.h,v 1.1 1998/11/05 12:48:39 paubert Exp $ * * Suggestions: sl@mathinsa.insa-lyon.fr * Bugs: sl-bugs@mathinsa.insa-lyon.fr * * For more information, please see the sl++ Home Page: * http://wwwinfo.cern.ch/~ldeniau/sl.html * ****************************** */#ifndef SL_MATRIX_STRUCTURES_SYMMETRIC_ITERATOR_H#define SL_MATRIX_STRUCTURES_SYMMETRIC_ITERATOR_H#ifndef SL_MATRIX_STRUCTURES_SYMMETRIC_H#error <sl/matrix/structures/symmetric/iterator.h> must be included via <sl/matrix/structures/symmetric.h>#endif#ifdef HAVE_NAMESPACEnamespace sl {#endif class SymmetricIterator : public GeneralIterator { public: typedef Symmetric structure_t; private: Index map (Index const i, Index const j) const { return j<=i ? (i-MinIndex)*(i-MinIndex+1)/2+j : (j-MinIndex)*(j-MinIndex+1)/2+i; } public: SymmetricIterator(structure_t const* structure, Index const i =MinIndex, Index const j =MinIndex) : GeneralIterator(structure->rows(),structure->cols(), i, j, map(i,j)) { assert ( structure->rows() == structure->cols() ); } public: void operator ++ () { if (++my_j > my_i) { my_j = MinIndex; if (++my_i > my_n) my_ok = false; } ++my_o; } void incRow() { if (++my_i > my_n) my_ok = false; else my_o += my_i-1; } void incCol() { if (++my_j > my_i) my_ok = false; else ++my_o; } };#ifdef HAVE_NAMESPACE}#endif #endif// SL_MATRIX_STRUCTURES_SYMMETRIC_ITERATOR_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -