00001
00009 #ifndef PREFIXARRAYLIST_HPP_050403
00010 #define PREFIXARRAYLIST_HPP_050403
00011
00012
00013
00014 #include <algorithm>
00015
00016 typedef std::vector< std::vector<itemvecCounterPair> > diag_array_row_t;
00017 typedef std::vector<diag_array_row_t> diag_array_t;
00018
00019 template<unsigned int THRESHOLD = 100>
00020 class PrefixArrayList : public diag_array_t{
00021 protected:
00022
00023 bool less(const std::pair<itemvector, counter_t>& f,
00024 const itemvector& s) const
00025 {
00026 return f.first < s;
00027 }
00028 public:
00029
00030 PrefixArrayList(const size_t largest_item)
00031 {
00032 diag_array_t::reserve(largest_item );
00033 diag_array_t::resize(largest_item);
00034 for( item_t index = 0; index < largest_item; ++index)
00035 {
00036 diag_array_t::operator[](index).reserve(largest_item - index);
00037 diag_array_t::operator[](index).resize(largest_item - index);
00038 }
00039 }
00040
00041
00042 };
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074 #endif //PREFIXARRAYLIST_HPP_050403