2016-10-23 14 views
0

부스트 multiindex 컨테이너에 대한 설명서는 반복 할 인덱스를 선언 한 후 세트로 사용할 수 있음을 나타냅니다. 헤더반복자를 반환하여 multiintex 컨테이너를 std :: set <> :: iterator로 향상 시키십시오.

typedef multi_index_container< 
    Employee, 
    indexed_by< 
     ordered_non_unique< 
      composite_key< 
       Employee, 
       member<Employee, int, &Employee::id>, 
       member<Employee, int, &Employee::salary> 
      > 
     > 
    > > EmployeeSet; 
const std::set<Employee>::iterator getEmployees(); 

static EmployeeSet employeeSet; 

Test.cc :

const std::set<Test::Employee>::iterator getEmployees(){ 
    std::pair<EmployeeSet::iterator, EmployeeSet::iterator> by_id = 
    employeeSet.equal_range(id); 
    return by_id.first; 
} 

인가가 부스트 구현을 숨기고 반복자는 std::set

예에 반복자로 위장 된 반환 할 수있는 경우 그래서 궁금 해서요 이런 일을 할 수 있습니까? 그리고 어떻게?

답변

2

아니요, 불가능합니다. 사용자가 정의한 EmployeeSetstd::set (실제로는 std::multiset)처럼 작동하지만 실제로는 아닙니다. 이러한 관련없는 컨테이너의 iterator 유형이 다르므로 다른 컨테이너와 같이 전달할 수 없습니다.

iterator의 색인을 multi_index_container의 색인으로 std::set::iterator으로 전달해야하는 이유를 다시 생각해보십시오.