コード例 #1
0
ファイル: lcp_dac.hpp プロジェクト: chenlonggang/sdsl-lite
 /*! \param i Index of the value. \f$ i \in [0..size()-1]\f$.
  * Time complexity: O(log n/k)
  */
 inline value_type operator[](size_type i)const {
     uint8_t level = 1;
     uint8_t offset = t_b;
     size_type result = m_data[i];
     const uint64_t* p = m_level_pointer_and_rank.data();
     uint64_t ppi = (*p)+i;
     while (level < m_max_level and m_overflow[ppi]) {
         p += 2;
         ppi = *p + (m_overflow_rank(ppi) - *(p-1));
         result |= (m_data[ppi] << (offset));
         ++level;
         offset += t_b;
     }
     return result;
 }