00001 #ifndef SPARSEVEC_TMPL_HEADER
00002 #define SPARSEVEC_TMPL_HEADER
00003
00004
00005
00013
00014
00015
00016
00017
00018
00019 #ifdef _STANDARD_C_PLUS_PLUS
00020 #include <map>
00021 using namespace std;
00022 #else
00023 #include <map.h>
00024 #endif
00025
00026
00027
00028 namespace RazorBack {
00029
00036 template <class T_>
00037 class Sparsevec_
00038 {
00039
00040 private:
00041
00042 static const T_ NULLITEM;
00043 map<size_t, T_> Data;
00044
00045
00046 public:
00047
00049 Sparsevec_(): Data() {}
00050
00052 const T_& get_item(size_t Idx) const;
00053
00058 bool set_item(size_t Idx, const T_& Val);
00059
00061 void clear() { Data.erase(Data.begin(), Data.end()); }
00062
00064 bool empty() const { return Data.empty(); }
00065
00066 protected:
00067
00068 const map<size_t, T_>& data() const { return Data; }
00069
00070 };
00071
00072
00073 }
00074
00075
00076
00077 #ifdef INCLUDE_TMPL_DEFS
00078 #include "Sparsevec.cc"
00079 #endif
00080
00081 #endif // SPARSEVEC_TMPL_HEADER