내 프로젝트에 다음 데이터 구조를 구현해야합니다. 나는 (만 증가 사실에) 시간이 지남에 따라 변경 될 수 있습니다 내가 연결된 카운터를 저장할 때마다 포인터를 들어C++ Bimap 왼쪽 unordered_map 오른쪽 정렬 된 가변 멀티 맵
uint64_t
에
const MyClass*
의 관계를 가지고있다. 이것은 문제가되지 않을 것이며 단순히 std :: map에 저장할 수 있습니다. 문제는 내가 가장 높은 값을 가진 포인터에 빠른 액세스가 필요하다는 것입니다.
그래서 결론에 boost :: bimap을 사용하게되었습니다. 그것이 정의 내 프로젝트에 대해 다음과
typedef boost::bimaps::bimap<
boost::bimaps::unordered_set_of< const MyClass* >,
boost::bimaps::multiset_of< uint64_t, std::greater<uint64_t> >
> MyBimap;
MyBimap bimap;
한번 삽입 된 한 쌍의 uint64_t을 수정할 수 없습니다 바로 것을이 잘 작동,하지만 내가? 설명서에 따르면 multiset_of는 상수이기 때문에 bimap에서 쌍의 값을 변경할 수는 없습니다.
어떻게해야합니까? 이 bimap에서 하나의 키 값을 변경하는 올바른 방법은 무엇입니까? 아니면이 문제를 해결할 수있는 더 간단한 데이터 구조가 있습니까?
우선 순위 대기열처럼 들립니다. –
오른쪽의 키가 변경 될 수있는 경우 인덱스 무결성을 유지하는 데 필요한 코드를 상상해보십시오 ... –
우선 순위 큐에서 우선 순위를 변경할 수 있습니까? 첫 번째 N 값에 액세스 할 수 있습니까? –