SNAP Library 2.4, User Reference  2015-05-11 19:40:56
SNAP, a general purpose, high performance system for analysis and manipulation of large networks
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
TVVec< TVal > Class Template Reference

#include <ds.h>

Public Member Functions

 TVVec ()
 
 TVVec (const TVVec &Vec)
 
 TVVec (const int &_XDim, const int &_YDim)
 
 TVVec (const TVec< TVal > &_ValV, const int &_XDim, const int &_YDim)
 
 TVVec (TSIn &SIn)
 
void Load (TSIn &SIn)
 
void Save (TSOut &SOut) const
 
TVVec< TVal > & operator= (const TVVec< TVal > &Vec)
 
bool operator== (const TVVec &Vec) const
 
bool Empty () const
 
void Clr ()
 
void Gen (const int &_XDim, const int &_YDim)
 
int GetXDim () const
 
int GetYDim () const
 
int GetRows () const
 
int GetCols () const
 
TVec< TVal > & Get1DVec ()
 
const TVal & At (const int &X, const int &Y) const
 
TVal & At (const int &X, const int &Y)
 
TVal & operator() (const int &X, const int &Y)
 
const TVal & operator() (const int &X, const int &Y) const
 
void PutXY (const int &X, const int &Y, const TVal &Val)
 
void PutAll (const TVal &Val)
 
void PutX (const int &X, const TVal &Val)
 
void PutY (const int &Y, const TVal &Val)
 
TVal GetXY (const int &X, const int &Y) const
 
void GetRow (const int &RowN, TVec< TVal > &Vec) const
 
void GetCol (const int &ColN, TVec< TVal > &Vec) const
 
void SwapX (const int &X1, const int &X2)
 
void SwapY (const int &Y1, const int &Y2)
 
void Swap (TVVec< TVal > &Vec)
 
void ShuffleX (TRnd &Rnd)
 
void ShuffleY (TRnd &Rnd)
 
void GetMxValXY (int &X, int &Y) const
 
void CopyFrom (const TVVec< TVal > &VVec)
 
void AddXDim ()
 
void AddYDim ()
 
void DelX (const int &X)
 
void DelY (const int &Y)
 

Private Attributes

TInt XDim
 
TInt YDim
 
TVec< TVal > ValV
 

Detailed Description

template<class TVal>
class TVVec< TVal >

Definition at line 2109 of file ds.h.

Constructor & Destructor Documentation

template<class TVal>
TVVec< TVal >::TVVec ( )
inline

Definition at line 2114 of file ds.h.

2114 : XDim(), YDim(), ValV(){}
TInt YDim
Definition: ds.h:2111
TInt XDim
Definition: ds.h:2111
TVec< TVal > ValV
Definition: ds.h:2112
template<class TVal>
TVVec< TVal >::TVVec ( const TVVec< TVal > &  Vec)
inline

Definition at line 2115 of file ds.h.

2115  :
2116  XDim(Vec.XDim), YDim(Vec.YDim), ValV(Vec.ValV){}
TInt YDim
Definition: ds.h:2111
TInt XDim
Definition: ds.h:2111
TVec< TVal > ValV
Definition: ds.h:2112
template<class TVal>
TVVec< TVal >::TVVec ( const int &  _XDim,
const int &  _YDim 
)
inline

Definition at line 2117 of file ds.h.

2117  :
2118  XDim(), YDim(), ValV(){Gen(_XDim, _YDim);}
TInt YDim
Definition: ds.h:2111
TInt XDim
Definition: ds.h:2111
void Gen(const int &_XDim, const int &_YDim)
Definition: ds.h:2133
TVec< TVal > ValV
Definition: ds.h:2112
template<class TVal>
TVVec< TVal >::TVVec ( const TVec< TVal > &  _ValV,
const int &  _XDim,
const int &  _YDim 
)
inlineexplicit

Definition at line 2119 of file ds.h.

2119  :
2120  XDim(_XDim), YDim(_YDim), ValV(_ValV){ IAssert(ValV.Len()==XDim*YDim); }
#define IAssert(Cond)
Definition: bd.h:262
TInt YDim
Definition: ds.h:2111
TSizeTy Len() const
Returns the number of elements in the vector.
Definition: ds.h:535
TInt XDim
Definition: ds.h:2111
TVec< TVal > ValV
Definition: ds.h:2112
template<class TVal>
TVVec< TVal >::TVVec ( TSIn SIn)
inlineexplicit

Definition at line 2121 of file ds.h.

2121 {Load(SIn);}
void Load(TSIn &SIn)
Definition: ds.h:2122

Member Function Documentation

template<class TVal >
void TVVec< TVal >::AddXDim ( )

Definition at line 2230 of file ds.h.

2230  {
2231  TVVec<TVal> NewVVec(XDim+1, YDim);
2232  NewVVec.CopyFrom(*this);
2233  *this=NewVVec;
2234 }
TInt YDim
Definition: ds.h:2111
TInt XDim
Definition: ds.h:2111
Definition: ds.h:2109
template<class TVal >
void TVVec< TVal >::AddYDim ( )

Definition at line 2237 of file ds.h.

2237  {
2238  TVVec<TVal> NewVVec(XDim, YDim+1);
2239  NewVVec.CopyFrom(*this);
2240  *this=NewVVec;
2241 }
TInt YDim
Definition: ds.h:2111
TInt XDim
Definition: ds.h:2111
Definition: ds.h:2109
template<class TVal>
const TVal& TVVec< TVal >::At ( const int &  X,
const int &  Y 
) const
inline

Definition at line 2142 of file ds.h.

2142  {
2143  Assert((0<=X)&&(X<int(XDim))&&(0<=Y)&&(Y<int(YDim)));
2144  return ValV[X*YDim+Y];}
TInt YDim
Definition: ds.h:2111
TInt XDim
Definition: ds.h:2111
#define Assert(Cond)
Definition: bd.h:251
TVec< TVal > ValV
Definition: ds.h:2112
template<class TVal>
TVal& TVVec< TVal >::At ( const int &  X,
const int &  Y 
)
inline

Definition at line 2145 of file ds.h.

2145  {
2146  Assert((0<=X)&&(X<int(XDim))&&(0<=Y)&&(Y<int(YDim)));
2147  return ValV[X*YDim+Y];}
TInt YDim
Definition: ds.h:2111
TInt XDim
Definition: ds.h:2111
#define Assert(Cond)
Definition: bd.h:251
TVec< TVal > ValV
Definition: ds.h:2112
template<class TVal>
void TVVec< TVal >::Clr ( )
inline

Definition at line 2132 of file ds.h.

2132 {XDim=0; YDim=0; ValV.Clr();}
TInt YDim
Definition: ds.h:2111
TInt XDim
Definition: ds.h:2111
void Clr(const bool &DoDel=true, const TSizeTy &NoDelLim=-1)
Clears the contents of the vector.
Definition: ds.h:953
TVec< TVal > ValV
Definition: ds.h:2112
template<class TVal>
void TVVec< TVal >::CopyFrom ( const TVVec< TVal > &  VVec)

Definition at line 2219 of file ds.h.

2219  {
2220  int CopyXDim=TInt::GetMn(GetXDim(), VVec.GetXDim());
2221  int CopyYDim=TInt::GetMn(GetYDim(), VVec.GetYDim());
2222  for (int X=0; X<CopyXDim; X++){
2223  for (int Y=0; Y<CopyYDim; Y++){
2224  At(X, Y)=VVec.At(X, Y);
2225  }
2226  }
2227 }
int GetXDim() const
Definition: ds.h:2136
static int GetMn(const int &Int1, const int &Int2)
Definition: dt.h:1088
int GetYDim() const
Definition: ds.h:2137
const TVal & At(const int &X, const int &Y) const
Definition: ds.h:2142
template<class TVal >
void TVVec< TVal >::DelX ( const int &  X)

Definition at line 2244 of file ds.h.

2244  {
2245  TVVec<TVal> NewVVec(XDim-1, YDim);
2246  for (int Y=0; Y<YDim; Y++){
2247  for (int LX=0; LX<X; LX++){
2248  NewVVec.At(LX, Y)=At(LX, Y);}
2249  for (int RX=X+1; RX<XDim; RX++){
2250  NewVVec.At(RX-1, Y)=At(RX, Y);}
2251  }
2252  *this=NewVVec;
2253 }
TInt YDim
Definition: ds.h:2111
TInt XDim
Definition: ds.h:2111
Definition: ds.h:2109
const TVal & At(const int &X, const int &Y) const
Definition: ds.h:2142
template<class TVal >
void TVVec< TVal >::DelY ( const int &  Y)

Definition at line 2256 of file ds.h.

2256  {
2257  TVVec<TVal> NewVVec(XDim, YDim-1);
2258  for (int X=0; X<XDim; X++){
2259  for (int LY=0; LY<Y; LY++){
2260  NewVVec.At(X, LY)=At(X, LY);}
2261  for (int RY=Y+1; RY<YDim; RY++){
2262  NewVVec.At(X, RY-1)=At(X, RY);}
2263  }
2264  *this=NewVVec;
2265 }
TInt YDim
Definition: ds.h:2111
TInt XDim
Definition: ds.h:2111
Definition: ds.h:2109
const TVal & At(const int &X, const int &Y) const
Definition: ds.h:2142
template<class TVal>
bool TVVec< TVal >::Empty ( ) const
inline

Definition at line 2131 of file ds.h.

2131 {return ValV.Len()==0;}
TSizeTy Len() const
Returns the number of elements in the vector.
Definition: ds.h:535
TVec< TVal > ValV
Definition: ds.h:2112
template<class TVal>
void TVVec< TVal >::Gen ( const int &  _XDim,
const int &  _YDim 
)
inline

Definition at line 2133 of file ds.h.

2133  {
2134  Assert((_XDim>=0)&&(_YDim>=0));
2135  XDim=_XDim; YDim=_YDim; ValV.Gen(XDim*YDim);}
TInt YDim
Definition: ds.h:2111
TInt XDim
Definition: ds.h:2111
#define Assert(Cond)
Definition: bd.h:251
TVec< TVal > ValV
Definition: ds.h:2112
void Gen(const TSizeTy &_Vals)
Constructs a vector (an array) of _Vals elements.
Definition: ds.h:486
template<class TVal>
TVec<TVal>& TVVec< TVal >::Get1DVec ( )
inline

Definition at line 2140 of file ds.h.

2140 {return ValV;}
TVec< TVal > ValV
Definition: ds.h:2112
template<class TVal>
void TVVec< TVal >::GetCol ( const int &  ColN,
TVec< TVal > &  Vec 
) const

Definition at line 2276 of file ds.h.

2276  {
2277  Vec.Gen(GetRows(), 0);
2278  for (int row = 0; row < GetRows(); row++) {
2279  Vec.Add(At(row, ColN));
2280  }
2281 }
void Gen(const TSizeTy &_Vals)
Constructs a vector (an array) of _Vals elements.
Definition: ds.h:486
TSizeTy Add()
Adds a new element at the end of the vector, after its current last element.
Definition: ds.h:559
int GetRows() const
Definition: ds.h:2138
const TVal & At(const int &X, const int &Y) const
Definition: ds.h:2142
template<class TVal>
int TVVec< TVal >::GetCols ( ) const
inline

Definition at line 2139 of file ds.h.

2139 {return YDim;}
TInt YDim
Definition: ds.h:2111
template<class TVal >
void TVVec< TVal >::GetMxValXY ( int &  X,
int &  Y 
) const

Definition at line 2212 of file ds.h.

2212  {
2213  int MxValN=ValV.GetMxValN();
2214  Y=MxValN%YDim;
2215  X=MxValN/YDim;
2216 }
TInt YDim
Definition: ds.h:2111
TVec< TVal > ValV
Definition: ds.h:2112
TSizeTy GetMxValN() const
Returns the position of the largest element in the vector.
Definition: ds.h:1467
template<class TVal>
void TVVec< TVal >::GetRow ( const int &  RowN,
TVec< TVal > &  Vec 
) const

Definition at line 2268 of file ds.h.

2268  {
2269  Vec.Gen(GetCols(), 0);
2270  for (int col = 0; col < GetCols(); col++) {
2271  Vec.Add(At(RowN, col));
2272  }
2273 }
void Gen(const TSizeTy &_Vals)
Constructs a vector (an array) of _Vals elements.
Definition: ds.h:486
TSizeTy Add()
Adds a new element at the end of the vector, after its current last element.
Definition: ds.h:559
int GetCols() const
Definition: ds.h:2139
const TVal & At(const int &X, const int &Y) const
Definition: ds.h:2142
template<class TVal>
int TVVec< TVal >::GetRows ( ) const
inline

Definition at line 2138 of file ds.h.

2138 {return XDim;}
TInt XDim
Definition: ds.h:2111
template<class TVal>
int TVVec< TVal >::GetXDim ( ) const
inline

Definition at line 2136 of file ds.h.

2136 {return XDim;}
TInt XDim
Definition: ds.h:2111
template<class TVal>
TVal TVVec< TVal >::GetXY ( const int &  X,
const int &  Y 
) const
inline

Definition at line 2159 of file ds.h.

2159  {
2160  Assert((0<=X)&&(X<int(XDim))&&(0<=Y)&&(Y<int(YDim)));
2161  return ValV[X*YDim+Y];}
TInt YDim
Definition: ds.h:2111
TInt XDim
Definition: ds.h:2111
#define Assert(Cond)
Definition: bd.h:251
TVec< TVal > ValV
Definition: ds.h:2112
template<class TVal>
int TVVec< TVal >::GetYDim ( ) const
inline

Definition at line 2137 of file ds.h.

2137 {return YDim;}
TInt YDim
Definition: ds.h:2111
template<class TVal>
void TVVec< TVal >::Load ( TSIn SIn)
inline

Definition at line 2122 of file ds.h.

2122 {XDim.Load(SIn); YDim.Load(SIn); ValV.Load(SIn);}
TInt YDim
Definition: ds.h:2111
void Load(TSIn &SIn)
Definition: ds.h:877
TInt XDim
Definition: ds.h:2111
void Load(TSIn &SIn)
Definition: dt.h:1057
TVec< TVal > ValV
Definition: ds.h:2112
template<class TVal>
TVal& TVVec< TVal >::operator() ( const int &  X,
const int &  Y 
)
inline

Definition at line 2148 of file ds.h.

2148  {
2149  return At(X, Y);}
const TVal & At(const int &X, const int &Y) const
Definition: ds.h:2142
template<class TVal>
const TVal& TVVec< TVal >::operator() ( const int &  X,
const int &  Y 
) const
inline

Definition at line 2150 of file ds.h.

2150  {
2151  return At(X, Y);}
const TVal & At(const int &X, const int &Y) const
Definition: ds.h:2142
template<class TVal>
TVVec<TVal>& TVVec< TVal >::operator= ( const TVVec< TVal > &  Vec)
inline

Definition at line 2126 of file ds.h.

2126  {
2127  if (this!=&Vec){XDim=Vec.XDim; YDim=Vec.YDim; ValV=Vec.ValV;} return *this;}
TInt YDim
Definition: ds.h:2111
TInt XDim
Definition: ds.h:2111
TVec< TVal > ValV
Definition: ds.h:2112
template<class TVal>
bool TVVec< TVal >::operator== ( const TVVec< TVal > &  Vec) const
inline

Definition at line 2128 of file ds.h.

2128  {
2129  return (XDim==Vec.XDim)&&(YDim==Vec.YDim)&&(ValV==Vec.ValV);}
TInt YDim
Definition: ds.h:2111
TInt XDim
Definition: ds.h:2111
TVec< TVal > ValV
Definition: ds.h:2112
template<class TVal>
void TVVec< TVal >::PutAll ( const TVal &  Val)
inline

Definition at line 2154 of file ds.h.

2154 {ValV.PutAll(Val);}
void PutAll(const TVal &Val)
Sets all elements of the vector to value Val.
Definition: ds.h:1130
TVec< TVal > ValV
Definition: ds.h:2112
template<class TVal>
void TVVec< TVal >::PutX ( const int &  X,
const TVal &  Val 
)
inline

Definition at line 2155 of file ds.h.

2155  {
2156  for (int Y=0; Y<int(YDim); Y++){At(X, Y)=Val;}}
TInt YDim
Definition: ds.h:2111
const TVal & At(const int &X, const int &Y) const
Definition: ds.h:2142
template<class TVal>
void TVVec< TVal >::PutXY ( const int &  X,
const int &  Y,
const TVal &  Val 
)
inline

Definition at line 2153 of file ds.h.

2153 {At(X, Y)=Val;}
const TVal & At(const int &X, const int &Y) const
Definition: ds.h:2142
template<class TVal>
void TVVec< TVal >::PutY ( const int &  Y,
const TVal &  Val 
)
inline

Definition at line 2157 of file ds.h.

2157  {
2158  for (int X=0; X<int(XDim); X++){At(X, Y)=Val;}}
TInt XDim
Definition: ds.h:2111
const TVal & At(const int &X, const int &Y) const
Definition: ds.h:2142
template<class TVal>
void TVVec< TVal >::Save ( TSOut SOut) const
inline

Definition at line 2123 of file ds.h.

2123  {
2124  XDim.Save(SOut); YDim.Save(SOut); ValV.Save(SOut);}
TInt YDim
Definition: ds.h:2111
void Save(TSOut &SOut) const
Definition: dt.h:1058
TInt XDim
Definition: ds.h:2111
void Save(TSOut &SOut) const
Definition: ds.h:885
TVec< TVal > ValV
Definition: ds.h:2112
template<class TVal >
void TVVec< TVal >::ShuffleX ( TRnd Rnd)

Definition at line 2202 of file ds.h.

2202  {
2203  for (int X=0; X<XDim-1; X++){SwapX(X, X+Rnd.GetUniDevInt(XDim-X));}
2204 }
TInt XDim
Definition: ds.h:2111
void SwapX(const int &X1, const int &X2)
Definition: ds.h:2181
int GetUniDevInt(const int &Range=0)
Definition: dt.cpp:39
template<class TVal >
void TVVec< TVal >::ShuffleY ( TRnd Rnd)

Definition at line 2207 of file ds.h.

2207  {
2208  for (int Y=0; Y<YDim-1; Y++){SwapY(Y, Y+Rnd.GetUniDevInt(YDim-Y));}
2209 }
TInt YDim
Definition: ds.h:2111
void SwapY(const int &Y1, const int &Y2)
Definition: ds.h:2187
int GetUniDevInt(const int &Range=0)
Definition: dt.cpp:39
template<class TVal>
void TVVec< TVal >::Swap ( TVVec< TVal > &  Vec)

Definition at line 2193 of file ds.h.

2193  { //J:
2194  if (this!=&Vec){
2195  ::Swap(XDim, Vec.XDim);
2196  ::Swap(YDim, Vec.YDim);
2197  ValV.Swap(Vec.ValV);
2198  }
2199 }
TInt YDim
Definition: ds.h:2111
TInt XDim
Definition: ds.h:2111
void Swap(TVec< TVal, TSizeTy > &Vec)
Swaps the contents of the vector with Vec.
Definition: ds.h:1011
TVec< TVal > ValV
Definition: ds.h:2112
void Swap(TVVec< TVal > &Vec)
Definition: ds.h:2193
template<class TVal >
void TVVec< TVal >::SwapX ( const int &  X1,
const int &  X2 
)

Definition at line 2181 of file ds.h.

2181  {
2182  for (int Y=0; Y<int(YDim); Y++){
2183  TVal Val=At(X1, Y); At(X1, Y)=At(X2, Y); At(X2, Y)=Val;}
2184 }
TInt YDim
Definition: ds.h:2111
const TVal & At(const int &X, const int &Y) const
Definition: ds.h:2142
template<class TVal >
void TVVec< TVal >::SwapY ( const int &  Y1,
const int &  Y2 
)

Definition at line 2187 of file ds.h.

2187  {
2188  for (int X=0; X<int(XDim); X++){
2189  TVal Val=At(X, Y1); At(X, Y1)=At(X, Y2); At(X, Y2)=Val;}
2190 }
TInt XDim
Definition: ds.h:2111
const TVal & At(const int &X, const int &Y) const
Definition: ds.h:2142

Member Data Documentation

template<class TVal>
TVec<TVal> TVVec< TVal >::ValV
private

Definition at line 2112 of file ds.h.

template<class TVal>
TInt TVVec< TVal >::XDim
private

Definition at line 2111 of file ds.h.

template<class TVal>
TInt TVVec< TVal >::YDim
private

Definition at line 2111 of file ds.h.


The documentation for this class was generated from the following file: