SNAP Library 2.2, Developer Reference
2014-03-11 19:15:55
SNAP, a general purpose, high performance system for analysis and manipulation of large networks
|
#include <linalg.h>
Static Public Member Functions | |
static void | SparseMerge (const TKeyDatV &SrcV1, const TKeyDatV &SrcV2, TKeyDatV &DstV) |
Private Types | |
typedef TVec< TKeyDat< TKey, TDat > > | TKeyDatV |
typedef TVec<TKeyDat<TKey, TDat> > TSparseOps< TKey, TDat >::TKeyDatV [private] |
static void TSparseOps< TKey, TDat >::SparseMerge | ( | const TKeyDatV & | SrcV1, |
const TKeyDatV & | SrcV2, | ||
TKeyDatV & | DstV | ||
) | [inline, static] |
Definition at line 548 of file linalg.h.
References TVec< TVal, TSizeTy >::Add(), TVec< TVal, TSizeTy >::Clr(), and TVec< TVal, TSizeTy >::Len().
Referenced by TLinAlg::AddVec().
{ DstV.Clr(); const int Src1Len = SrcV1.Len(); const int Src2Len = SrcV2.Len(); int Src1N = 0, Src2N = 0; while (Src1N < Src1Len && Src2N < Src2Len) { if (SrcV1[Src1N].Key < SrcV2[Src2N].Key) { DstV.Add(SrcV1[Src1N]); Src1N++; } else if (SrcV1[Src1N].Key > SrcV2[Src2N].Key) { DstV.Add(SrcV2[Src2N]); Src2N++; } else { DstV.Add(TKeyDat<TKey, TDat>(SrcV1[Src1N].Key, SrcV1[Src1N].Dat + SrcV2[Src2N].Dat)); Src1N++; Src2N++; } } while (Src1N < Src1Len) { DstV.Add(SrcV1[Src1N]); Src1N++; } while (Src2N < Src2Len) { DstV.Add(SrcV2[Src2N]); Src2N++; } }