> 백엔드 개발 > C++ > 효율적인 조회를 유지하면서 `std::map`에서 삽입 순서를 유지하는 방법은 무엇입니까?

효율적인 조회를 유지하면서 `std::map`에서 삽입 순서를 유지하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-06 09:37:11
원래의
197명이 탐색했습니다.

How to Maintain Insertion Order in a `std::map` While Preserving Efficient Lookups?

std::map에서 삽입 순서 유지

std::map 삽입 순서를 유지하지 못하면 이 중요한 속성을 유지하는 컨테이너가 필요합니다. std::Vector> 실행 가능한 대안처럼 보이지만 빈번한 조회 및 증분 연산으로 인한 성능 저하로 인해 적합성이 의심됩니다.

효과적인 해결책 중 하나는 std::map과 std::Vector의 조합을 사용하는 것입니다. 지도는 효율적인 문자열 기반 조회를 보장하므로 정렬 작업을 수행하기 전에 지도 내용을 std::Vector에 복사할 수 있습니다. 사용자 정의 펑터를 사용하여 삽입 순서에 따른 정렬 논리를 정의할 수 있습니다.

또는 Boost 라이브러리는 Boost::multi_index를 사용하여 강력한 솔루션을 제공합니다. 이를 통해 단일 컨테이너의 다중 인덱싱이 가능합니다. 귀하의 경우 다음 구조를 구현할 수 있습니다.

struct value_t {
  std::string s;
  int i;
};

struct string_tag {};

typedef multi_index_container<
    value_t,
    indexed_by<
        random_access<>, // index representing insertion order
        hashed_unique<tag<string_tag>, member<value_t, string, &value_t::s>>
    >
> values_t;
로그인 후 복사

여기서, random_access 인덱스는 삽입 순서를 유지하고 hashed_unique 인덱스는 효율적인 조회를 위해 고유한 문자열 식별자를 보장합니다. 이 접근 방식은 효율적인 조회와 게재 신청서 보존을 모두 제공합니다.

위 내용은 효율적인 조회를 유지하면서 `std::map`에서 삽입 순서를 유지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿