STL 관련 용기 의 set \ map --- - STL 소스 코드 를 예 로 들 면
set
template
class set;
set 클래스 는 세 개의 템 플 릿 매개 변 수 를 포함 하고 키 형식Key, 키 비교 방법compare, 분배 기 종류Alloc;평소에 자주 사용 하 는 것 은 첫 번 째 템 플 릿 매개 변수: 키 종류Key, 예:
set iset={1,2,3,4,5};
다른 두 템 플 릿 매개 변 수 는 특수 한 응용 장면 에서 역할 을 발휘 합 니 다.compare 템 플 릿 파 라미 터 는 용기 에 있 는 원소 의 비교 방법 을 지정 할 수 있 으 며, 용기 에 저 장 된 원소 의 크기 에 따라 메모리 분배 정책 을 수정 할 수 있 습 니 다Alloc。이 두 매개 변 수 는 set 의 구조 함수 인 자 를 설정 하여 지정 할 수 있 습 니 다.
explicit set(const _Compare& __comp,
const allocator_type& __a = allocator_type())
: _M_t(__comp, __a) {}
set 가 지정 하지 않 은 두 템 플 릿 인 자 를 사용 하면 기본 버 전 을 사용 합 니 다.
template ),
class _Alloc = __STL_DEFAULT_ALLOCATOR(_Key) >
class set;
map
template
class map ;
map 류 는 네 가지 템 플 릿 매개 변수 가 있 는데 그것 이 바로 키 유형 입 니 다.Key, 값 유형Tp, 키 비교 방법compare, 분배 기 종류Alloc;평소에 자주 사용 하 는 것 은 앞의 두 템 플 릿 매개 변수: 키 형식Key 와 값 유형Tp, 예:
#include
#include
다음 두 개의 인 자 를 지정 하지 않 으 면 기본 템 플 릿 인 자 를 사용 합 니 다.
template ),
class _Alloc = __STL_DEFAULT_ALLOCATOR(_Tp) >
class map;
맵 의 키 맵 값 은 [] 연산 자 를 통 해 진 행 됩 니 다:
_Tp& operator[](const key_type& __k) {
iterator __i = lower_bound(__k);
// __i->first is greater than or equivalent to __k.
// insert , , ,
// ->value_type(__k,_Tp()), map
// ,__i , 。
if (__i == end() || key_comp()(__k, (*__i).first))
__i = insert(__i, value_type(__k, _Tp()));
return (*__i).second;
}
이 함 수 는 우선 키k. 검색 을 진행 합 니 다. 찾 지 못 하면 검색 끝 위치 에 새로운 노드 를 삽입 합 니 다.함수 가 되 돌아 오 는 것 은 키 에 대응 하 는 값 의 인용 이기 때문에 값 을 부여 할 수 있 습 니 다.
multiset 와 multimap
multiset 와 multimap 의 용법 은 set, map 의 용법 과 같 지만 중복 되 는 키 를 허용 합 니 다.소스 코드 에 대응 하 는 것 은 multi 버 전의 삽입 작업 이 빨 간 검 은 나무의 insert 를 호출 하 는 것 입 니 다.equal 인터페이스, 일반 버 전 은 insert유 니 크 인터페이스.multiset 를 예 로 들 면 set 버 전
pair insert(const value_type& __x) {
pair __p = _M_t.insert_unique(__x);
return pair(__p.first, __p.second);
}
multiset 버 전
iterator insert(const value_type& __x) {
return _M_t.insert_equal(__x);
}
작은 매듭
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.