boost::multi_index
을 성공적으로 만들고 값을 삽입했습니다. multi_index에는 두 개의 해시 인덱스가 있습니다. 둘 다 멤버 함수이지만 하나는 고유하고 다른 하나는 고유하지 않습니다.boost :: multi_index에서 값 가져 오기
해시 값을 사용하여 컨테이너에서 값을 가져 오는 방법을 알아 내려고하고 있습니다. 내가 어떻게해야하는지 이해할 수 없었다. 나는 온라인으로 수색했으며, 많은 사람들이이 질문을 한 것을 알고있다. 그러나 나는해야 할 일이 무엇인지 이해하지 못합니다. C++ 11에서 몇 가지 솔루션을 보았지만 C++ 11을 사용하지 않고 무엇이 수행되고 있는지 이해하지 못합니다. 누군가 제게 그것을 사용하는 방법을 설명해 주시겠습니까?
- 는 (있는 경우) 그 값을 가져
- 에 값이 아닌 고유 ID 맵을 가져,
나는 할 수 있도록하려면, 내 코드는 아래의 고유 ID#include "stdafx.h" #include<multi_index_container.hpp> #include<boost/multi_index/hashed_index.hpp> #include<boost/multi_index/mem_fun.hpp> #include<boost/multi_index/tag.hpp> class RetClass { int a, b; }; class StoreMe { RetClass ex; std::string exStr; int id; public: void setId(RetClass a) { ex = a; }; virtual const RetClass& getId() const { return ex; } virtual std::string getIdString() const { return exStr; } int getUniqueId() const { return id; } }; struct IndexByStringId{}; struct IndexByUniqueId{}; typedef boost::multi_index_container< StoreMe, boost::multi_index::indexed_by< boost::multi_index::hashed_unique< boost::multi_index::tag<IndexByStringId>, boost::multi_index::const_mem_fun<StoreMe, std::string, &StoreMe::getIdString> >, boost::multi_index::hashed_non_unique< boost::multi_index::tag<IndexByUniqueId>, boost::multi_index::const_mem_fun<StoreMe, int, &StoreMe::getUniqueId> > > > mi_storeMe; int _tmain(int argc, _TCHAR* argv[]) { return 0; }
이 작업을 수행하는 데 올바른/간단한 방법을 알려주십시오. 또한 나는 C++ 11을 사용하지 않는다. 여기
이 잘 @Agnew인가 :
둘째, 당신은 쉽게 인덱스를 반복 할 수 있습니다 : 함수 템플릿 그들에게 추론 할 수있는 경우에 필요가 유형의 철자 없습니다? 'std :: pair :: 유형 :: 반복자, mi_Container :: 인덱스 :: 유형 :: 반복자> range_it = Containers.get (). equal_range (nonEqId); \t 경우 (range_it.first! = Containers.get (). 말()) \t \t //이 \t 가 {// 우리는 값 \t \t의 범위가있을 수 있습니다 발견 된 경우 (mi_Container :: 인덱스 :: 타입 :: iterator it = range_it.first; it! = range_it.둘째; it ++) \t \t { \t \t \t value = * it; // iterator가 가리키는 값을 얻고, "value"에서 원하는 것을 수행하십시오. . . .' –
codeworks
들여 쓰기가 불편해서 여기에서 들여 쓰기가 불가능합니다. @Agnew .. – codeworks
@codeworks 한 눈에 잘 보이지만 컴파일러와 프로그램에 대해 묻지 않으시겠습니까? ;-) – Angew