26 #ifndef SHORE_CONTAINER_FRAG_VECTOR_HPP__
27 #define SHORE_CONTAINER_FRAG_VECTOR_HPP__
33 #include <boost/iterator/iterator_facade.hpp>
38 template<
typename Iterator>
43 typedef typename std::iterator_traits<Iterator>::value_type value_type;
44 typedef typename std::iterator_traits<Iterator>::reference reference;
45 typedef typename std::iterator_traits<Iterator>::pointer pointer;
49 std::vector<Iterator> m_begins;
50 std::vector<Iterator> m_ends;
51 std::vector<size_t> m_begofs;
52 std::vector<size_t> m_endofs;
68 m_begins.push_back(beg);
69 m_ends.push_back(end);
70 m_begofs.push_back(m_size);
72 m_endofs.push_back(m_size);
102 const std::vector<size_t>::const_iterator ub=
103 std::upper_bound(m_endofs.begin(),m_endofs.end(),idx);
105 const size_t blocknum=ub-m_endofs.begin();
106 return m_begins[blocknum][idx-m_begofs[blocknum]];
112 return *m_begins.front();
118 return (*(m_ends.back()-1));
124 #endif // SHORE_CONTAINER_FRAG_VECTOR_HPP__