책읽는잉여의 구글블로그
2014년 7월 25일 금요일
boost multi-index map
nth_index 로 접근하는 방식은 deprecated 되어있다. 태그를 정의해서 사용 하도록 하자.
index 정의는 필요한 것만 하도록 한다.
hashed_ , oredred_ .. , unique, non_unique .. 취사 선택은 적절히 알아서..
#include
#include
#include
#include
// 태그 정의 namespace INDEX_TAGS { struct AREA {}; struct ZONE {}; struct AREA_ZONE {}; struct ITEM_CODE {}; // ... } // 데이터 정의 struct sample_data { unsigned int area; unsigned int zone; unsigned int loc; }; // 맵 정의 typedef boost::multi_index::multi_index_container < sample_data, boost::multi_index::indexed_by < boost::multi_index::ordered_non_unique < boost::multi_index::tag
, boost::multi_index::member
>, boost::multi_index::ordered_non_unique < boost::multi_index::tag
, boost::multi_index::member
>, boost::multi_index::ordered_non_unique < boost::multi_index::tag
, boost::multi_index::composite_key< sample_data, boost::multi_index::member
, boost::multi_index::member
> > > > sample_map; int main() { sample_map sample; // 찾기 { // 1 sample_map::index
::type& idxr = sample.get
(); sample_map::index_const_iterator
::type iter_lb, iter_ub; boost::tie(iter_lb, iter_ub) = idxr.equal_range(0); for (; iter_lb != iter_ub; ++iter_lb) { // ... } } { // 2 sample_map::index
::type& idxr = sample.get
(); sample_map::index_const_iterator
::type iter_lb, iter_ub; boost::tie(iter_lb, iter_ub) = idxr.equal_range(boost::make_tuple(1, 2)); for (; iter_lb != iter_ub; ++iter_lb) { // ... } } }
댓글 없음:
댓글 쓰기
최근 게시물
이전 게시물
홈
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기