remove non-ASCII characters.
This commit is contained in:
@ -122,12 +122,9 @@
|
|||||||
# define PAIRHASH_H
|
# define PAIRHASH_H
|
||||||
|
|
||||||
/*e @file pairhash.h @brief pair hash table
|
/*e @file pairhash.h @brief pair hash table
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/*r @file pairhash.h @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
*/
|
|
||||||
|
|
||||||
# include "refobj.h"
|
# include "refobj.h"
|
||||||
|
|
||||||
|
|
||||||
@ -146,7 +143,7 @@ public:
|
|||||||
incr=inc_first ? parent->sizex : 1 ;
|
incr=inc_first ? parent->sizex : 1 ;
|
||||||
};
|
};
|
||||||
iterator(T *ptr_,size_t incr_):ptr(ptr_),incr(incr_){}
|
iterator(T *ptr_,size_t incr_):ptr(ptr_),incr(incr_){}
|
||||||
public:
|
public:
|
||||||
iterator(const iterator &other):ptr(other.ptr),incr(other.incr){
|
iterator(const iterator &other):ptr(other.ptr),incr(other.incr){
|
||||||
}
|
}
|
||||||
iterator():ptr(NULL),incr(0){}
|
iterator():ptr(NULL),incr(0){}
|
||||||
@ -159,7 +156,7 @@ public:
|
|||||||
++*this;
|
++*this;
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
iterator operator+(int delta) const {
|
iterator operator+(int delta) const {
|
||||||
return iterator(ptr+delta*incr,incr);
|
return iterator(ptr+delta*incr,incr);
|
||||||
}
|
}
|
||||||
bool operator!=(const iterator &other) const {
|
bool operator!=(const iterator &other) const {
|
||||||
@ -194,7 +191,7 @@ public:
|
|||||||
init(other.sizex,other.sizey,1);
|
init(other.sizex,other.sizey,1);
|
||||||
size_t n=get_datasize(sizex,sizey);
|
size_t n=get_datasize(sizex,sizey);
|
||||||
for(size_t i=0;i<n;i++)
|
for(size_t i=0;i<n;i++)
|
||||||
arr[i]=other.arr[i];
|
arr[i]=other.arr[i];
|
||||||
}
|
}
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
@ -224,7 +221,7 @@ public:
|
|||||||
|
|
||||||
virtual int init(size_t nx, size_t ny, int smanaged=-1){
|
virtual int init(size_t nx, size_t ny, int smanaged=-1){
|
||||||
int managed=parr.managed();
|
int managed=parr.managed();
|
||||||
if(managed && (sizex!=nx || sizey!=ny)){
|
if(managed && (sizex!=nx || sizey!=ny)){
|
||||||
parr.reset(NULL,0);
|
parr.reset(NULL,0);
|
||||||
}
|
}
|
||||||
if(smanaged>=0){ // for changing the managed flag?
|
if(smanaged>=0){ // for changing the managed flag?
|
||||||
@ -241,14 +238,14 @@ public:
|
|||||||
arr=parr.ptr();
|
arr=parr.ptr();
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
recmatrix(size_t nx, size_t ny):sizex(0), sizey(0){
|
recmatrix(size_t nx, size_t ny):sizex(0), sizey(0){
|
||||||
init(nx,ny,1);
|
init(nx,ny,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
//e initializes by unmanaged pointer
|
//e initializes by unmanaged pointer
|
||||||
recmatrix(size_t nx, size_t ny , T *ptr):parr(ptr,0),sizex(nx), sizey(ny) {
|
recmatrix(size_t nx, size_t ny , T *ptr):parr(ptr,0),sizex(nx), sizey(ny) {
|
||||||
init(nx,ny);
|
init(nx,ny);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -264,14 +261,14 @@ public:
|
|||||||
size_t i, n=get_datasize(sizex,sizey);
|
size_t i, n=get_datasize(sizex,sizey);
|
||||||
for(i=0;i<n;i++)arr[i]=val;
|
for(i=0;i<n;i++)arr[i]=val;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetDiag(const T &val){
|
void SetDiag(const T &val){
|
||||||
size_t i, size=(sizex>sizey? sizey: sizex);
|
size_t i, size=(sizex>sizey? sizey: sizex);
|
||||||
for(i=0;i<size;i++){
|
for(i=0;i<size;i++){
|
||||||
(*this)(i,i)=val;
|
(*this)(i,i)=val;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// returns iterator with fixed first index to iterate through matrix line elements
|
/// returns iterator with fixed first index to iterate through matrix line elements
|
||||||
iterator fix_first(size_t first, size_t second) const {
|
iterator fix_first(size_t first, size_t second) const {
|
||||||
return iterator(this,first,second,false);
|
return iterator(this,first,second,false);
|
||||||
@ -281,14 +278,14 @@ public:
|
|||||||
iterator fix_second(size_t first, size_t second) const {
|
iterator fix_second(size_t first, size_t second) const {
|
||||||
return iterator(this,first,second, true);
|
return iterator(this,first,second, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//e square matrix
|
//e square matrix
|
||||||
template <class T>
|
template <class T>
|
||||||
class sqmatrix: public recmatrix<T> {
|
class sqmatrix: public recmatrix<T> {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
size_t size;
|
size_t size;
|
||||||
@ -313,18 +310,18 @@ public:
|
|||||||
return n*n;
|
return n*n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
virtual int init(size_t n, int smanaged=-1){
|
virtual int init(size_t n, int smanaged=-1){
|
||||||
size=n;
|
size=n;
|
||||||
return recmatrix<T>::init(n,n,smanaged);
|
return recmatrix<T>::init(n,n,smanaged);
|
||||||
}
|
}
|
||||||
|
|
||||||
sqmatrix(size_t n):size(0){
|
sqmatrix(size_t n):size(0){
|
||||||
init(n,1);
|
init(n,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
//e initializes by unmanaged pointer
|
//e initializes by unmanaged pointer
|
||||||
sqmatrix(size_t n, T * /* ptr */):size(n){
|
sqmatrix(size_t n, T * /* ptr */):size(n){
|
||||||
init(n);
|
init(n);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -335,7 +332,7 @@ public:
|
|||||||
recmatrix<T>::parr.reset(ptr,0);
|
recmatrix<T>::parr.reset(ptr,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -355,7 +352,7 @@ public:
|
|||||||
incr=inc_first ? parent->size : 1 ;
|
incr=inc_first ? parent->size : 1 ;
|
||||||
};
|
};
|
||||||
iterator(T *ptr_,size_t incr_):ptr(ptr_),incr(incr_){}
|
iterator(T *ptr_,size_t incr_):ptr(ptr_),incr(incr_){}
|
||||||
public:
|
public:
|
||||||
iterator(const iterator &other):ptr(other.ptr),incr(other.incr){
|
iterator(const iterator &other):ptr(other.ptr),incr(other.incr){
|
||||||
}
|
}
|
||||||
iterator():ptr(NULL),incr(0){}
|
iterator():ptr(NULL),incr(0){}
|
||||||
@ -368,7 +365,7 @@ public:
|
|||||||
++*this;
|
++*this;
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
iterator operator+(int delta) const {
|
iterator operator+(int delta) const {
|
||||||
return iterator(ptr+delta*incr,incr);
|
return iterator(ptr+delta*incr,incr);
|
||||||
}
|
}
|
||||||
bool operator!=(const iterator &other) const {
|
bool operator!=(const iterator &other) const {
|
||||||
@ -403,7 +400,7 @@ public:
|
|||||||
init(other.size,1);
|
init(other.size,1);
|
||||||
size_t n=get_datasize(size);
|
size_t n=get_datasize(size);
|
||||||
for(size_t i=0;i<n;i++)
|
for(size_t i=0;i<n;i++)
|
||||||
arr[i]=other.arr[i];
|
arr[i]=other.arr[i];
|
||||||
}
|
}
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
@ -432,7 +429,7 @@ public:
|
|||||||
|
|
||||||
virtual int init(size_t n, int smanaged=-1){
|
virtual int init(size_t n, int smanaged=-1){
|
||||||
int managed=parr.managed();
|
int managed=parr.managed();
|
||||||
if(managed && size!=n){
|
if(managed && size!=n){
|
||||||
parr.reset(NULL,0);
|
parr.reset(NULL,0);
|
||||||
}
|
}
|
||||||
if(smanaged>=0){ // for changing the managed flag?
|
if(smanaged>=0){ // for changing the managed flag?
|
||||||
@ -448,14 +445,14 @@ public:
|
|||||||
arr=parr.ptr();
|
arr=parr.ptr();
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
sqmatrix(size_t n):size(0){
|
sqmatrix(size_t n):size(0){
|
||||||
init(n,1);
|
init(n,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
//e initializes by unmanaged pointer
|
//e initializes by unmanaged pointer
|
||||||
sqmatrix(size_t n, T *ptr):parr(ptr,0),size(n){
|
sqmatrix(size_t n, T *ptr):parr(ptr,0),size(n){
|
||||||
init(n);
|
init(n);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -470,14 +467,14 @@ public:
|
|||||||
size_t i, n=get_datasize(size);
|
size_t i, n=get_datasize(size);
|
||||||
for(i=0;i<n;i++)arr[i]=val;
|
for(i=0;i<n;i++)arr[i]=val;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetDiag(const T &val){
|
void SetDiag(const T &val){
|
||||||
size_t i;
|
size_t i;
|
||||||
for(i=0;i<size;i++){
|
for(i=0;i<size;i++){
|
||||||
(*this)(i,i)=val;
|
(*this)(i,i)=val;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// returns iterator with fixed first index to iterate through matrix line elements
|
/// returns iterator with fixed first index to iterate through matrix line elements
|
||||||
iterator fix_first(size_t first, size_t second) const {
|
iterator fix_first(size_t first, size_t second) const {
|
||||||
return iterator(this,first,second,false);
|
return iterator(this,first,second,false);
|
||||||
@ -487,15 +484,15 @@ public:
|
|||||||
iterator fix_second(size_t first, size_t second) const {
|
iterator fix_second(size_t first, size_t second) const {
|
||||||
return iterator(this,first,second, true);
|
return iterator(this,first,second, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
//e prints the matrix into a file
|
//e prints the matrix into a file
|
||||||
template< class matrix_t>
|
template< class matrix_t>
|
||||||
int fileout(FILE *f, const matrix_t &matr, const char *elm_fmt, const char *elm_sep=" ", const char *line_sep="\n"){
|
int fileout(FILE *f, const matrix_t &matr, const char *elm_fmt, const char *elm_sep=" ", const char *line_sep="\n"){
|
||||||
size_t i, j;
|
size_t i, j;
|
||||||
int res=0;
|
int res=0;
|
||||||
for(i=0;i<matr.size;i++){
|
for(i=0;i<matr.size;i++){
|
||||||
for(j=0;j<matr.size;j++){
|
for(j=0;j<matr.size;j++){
|
||||||
@ -513,15 +510,15 @@ template <class T>
|
|||||||
class smatrix: public sqmatrix<T>{
|
class smatrix: public sqmatrix<T>{
|
||||||
typedef sqmatrix<T> base_t;
|
typedef sqmatrix<T> base_t;
|
||||||
public:
|
public:
|
||||||
|
|
||||||
virtual size_t get_datasize(size_t n) const{
|
virtual size_t get_datasize(size_t n) const{
|
||||||
return n*(n+1)/2;
|
return n*(n+1)/2;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t index(size_t i, size_t j) const {
|
size_t index(size_t i, size_t j) const {
|
||||||
if(i>=j)
|
if(i>=j)
|
||||||
return (2*base_t::size-j-1)*j/2+i;
|
return (2*base_t::size-j-1)*j/2+i;
|
||||||
else
|
else
|
||||||
return (2*base_t::size-i-1)*i/2+j;
|
return (2*base_t::size-i-1)*i/2+j;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -572,7 +569,7 @@ public:
|
|||||||
hmatrix() : smatrix<T>() {}
|
hmatrix() : smatrix<T>() {}
|
||||||
|
|
||||||
hmatrix(const smatrix<T> &other) : smatrix<T>(other) {}
|
hmatrix(const smatrix<T> &other) : smatrix<T>(other) {}
|
||||||
|
|
||||||
//e copy constructor: makes a managed copy
|
//e copy constructor: makes a managed copy
|
||||||
hmatrix(const hmatrix &other): smatrix<T>(other){}
|
hmatrix(const hmatrix &other): smatrix<T>(other){}
|
||||||
|
|
||||||
@ -671,7 +668,7 @@ public:
|
|||||||
indm.Set(-1);
|
indm.Set(-1);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual ~PairHashM(){
|
virtual ~PairHashM(){
|
||||||
delete [] arr;
|
delete [] arr;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user