문제

내가 방금 배운 것처럼 내 다른 질문에서, 나는 a를 사용할 수있다 composite_key 구조물의 경우 std::vector 그리고 정수. 이제 내 질문은 다음과 같습니다. 어떻게 든 Hashed_indecies와 함께 작업 할 수 있습니까?

여기와 비슷한 예입니다 이것:

struct unique_property
{
  //the pair of int and std::vector<int> shall be unique
  int my_int;
  std::vector<int>  my_vec;
};

typedef multi_index_container<
  unique_property,
  indexed_by<
    hashed_unique< // indexed by my_int and every entry of my_vec
      composite_key<
        street_entry,
        member<unique_property,int,&unique_property::my_int>,
        member<unique_property,std::vector<int>,&unique_property::my_vec>
      >
    >,
    random_access< >
  >
> property_locator;

문제는 물론 a std::vector<int> 적합한 해시 키가 아닙니다. 이 코드를 우아한 래퍼 (또는 그와 비슷한)에 넣어 모든 항목에서 해시 키를 생성 할 수 있습니까? my_vec 또한?

도움이 되었습니까?

해결책

제안에서 코드 스 니펫을 사용하십시오 여기. 작동해야합니다. 나는 거기에 내 댓글을 추가했습니다.

다른 팁

벡터가 해시 가능 해지려면 hash<vector<int> > 기능 namespace std, 그러나 해시를 만들기로 만듭니다 (힌트 : 일부 응용 프로그램에서 처음 몇 가지 요소 만 해싱으로 도망 갈 수 있습니다). 이것은 만들어야합니다 std::hash_set<vector<int> > 일을하고 더 복잡한 컨테이너도 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top