map 와 set 의 초보 적 이해
map
**
map 의 매개 변수 설명
template<class Key, //key: key
class T,//T: value
class compare = less<Key>,//Compare: ,map key , ,
class Alloc = allocator<T> // , ,
> class map ;// map , 。
맵 의 교체 기
함수 선언
기능 소개
begin () 과 end ()
begin: 첫 번 째 요소 의 위치, end 마지막 요소 의 다음 위치
–
–
cbeg () 와 cend ()
begin 과 end 의 의 미 는 같 지만 cbgin 과 cend 가 가리 키 는 요 소 는 수정 할 수 없습니다.
–
–
rbegin () 과 rend ()
역방향 교체 기, rbegin 은 end 위치, rend 는 begin 위치 에 있 습 니 다.
–
–
crbegin () 과 crend ()
rbegin 과 rend 의 위치 와 마찬가지 로 crbegin 과 crend 가 가리 키 는 요 소 는 바 꿀 수 없습니다.
map 의 용량 과 요소 접근
함수 선언
기능 소개
bool empty ( ) const
맵 의 요소 가 비어 있 는 지 확인 하고 true 로 돌아 갑 니 다. 그렇지 않 으 면 false 로 돌아 갑 니 다.
–
–
size_type size() const
맵 의 유효 요소 개 수 를 되 돌려 줍 니 다.
–
–
mapped_type& operator[] (const key_type& k)
key 에 대응 하 는 val 값 을 되 돌려 줍 니 다.
맵 에서 요소 의 수정
#include
#include
void TestMap()
{
map<string, string> a;
// map :
// map , pair
a.insert(pair<string, string>("peach", " "));
// map , make_pair
a.insert(make_pair("banan", " "));
// operator[] map
/*
operator[] :
, insert() map
key , ,insert key
key , ,insert
operator[] insert value
*/
// map , , value , “ ” ,
m["apple"] = " ";
// key
//m.at("waterme") = " ";
cout << m.size() << endl;
// map , key
for (auto& e : m)
cout << e.first << "--->" << e.second << endl;
cout << endl;
// map key , key
auto ret = m.insert(make_pair("peach", " "));
if (ret.second)
cout << " map , " << endl;
else
cout << " peach :" << ret.first->first << "--->" <<
ret.first->second <<" "<< endl;
// key "apple"
m.erase("apple");
if (1 == m.count("apple"))
cout << "apple " << endl;
else
cout << "apple " << endl; }
지도 총화
set
set 템 플 릿 매개 변수
template <class T,//T: set , 。
class compare = less<T>//Compare:set
class Alloc = alloctor<T>//Alloc:set , STL
>class set;
set 의 구조
함수 선언
기능 소개
set (const Compare& comp = Compare(), const Allocator& = Allocator() );
빈 set
–
–
set (InputIterator first, InputIterator last, const Compare& comp = Compare(), const Allocator& = Allocator() );
[first, last) 구간 의 원소 구조 set 로
–
–
set ( const set& x);
set 의 복사 구조
set 의 교체 기
함수 선언
기능 구조
iterator begin()
set 의 시작 위치 요소 의 교체 기 를 되 돌려 줍 니 다.
–
–
iterator end()
set 의 마지막 요소 뒤의 교체 기 를 되 돌려 줍 니 다.
–
–
const_iterator cbegin() const
const 는 set 의 시작 위치 요 소 를 되 돌려 주 는 const 교체 기 입 니 다.
–
–
const_iterator cend() const
const 는 set 의 마지막 요소 뒤의 const 교체 기 를 되 돌려 줍 니 다.
–
–
reverse_iterator rbegin()
set 첫 번 째 요소 의 역방향 교체 기, 즉 end 를 되 돌려 줍 니 다.
–
–
reverse_iterator rend()
set 마지막 요소 의 다음 위 치 를 되 돌려 주 는 역방향 교체 기, 즉 rbegin
–
–
const_reverse_iterator crbegin() cons t
const 는 set 첫 번 째 요소 의 역방향 const 교체 기, cend 를 되 돌려 줍 니 다.
–
–
const_reverse_iterator crend() const
set 마지막 요소 의 다음 위 치 를 되 돌려 주 는 역방향 const 교체 기, 즉 crbegin
set 용량
함수 선언
기능 구조
bool empty ( ) const
set 가 비어 있 는 지 확인 하고 true 로 돌아 갑 니 다. 그렇지 않 으 면 true 로 돌아 갑 니 다.
–
–
size_type size() const
set 에서 유효 요소 의 개 수 를 되 돌려 줍 니 다.
set 실례,
#include
#include
void TestSet()
{
// array set
int array[] = { 1, 3, 5, 7, 9, 2, 4, 6, 8, 0, 1, 3, 5, 7, 9, 2, 4, 6, 8, 0 };
set<int> s(array, array+sizeof(array)/sizeof(array));
cout << s.size() << endl;
// set , :set
for (auto& e : s)
cout << e << " ";
cout << endl;
// set
for (auto it = s.rbegin(); it != s.rend(); ++it)
cout << *it << " ";
cout << endl;
// set 3
cout << s.count(3) << endl;
}
맵 과 set 는 모두 C + + 의 관련 용기 이 며, 그 밑 에 있 는 구현 은 모두 레 드 블랙 트 리 (RB - Tree) 입 니 다. 맵 과 set 가 열 린 각종 조작 인터페이스 로 인해 RB - tree 도 제공 되 기 때문에 거의 모든 맵 과 set 의 조작 행 위 는 RB - tree 의 조작 행위 일 뿐 입 니 다.
map 와 set 의 차이
(1) map 의 요 소 는 key - value (키워드 - 값) 입 니 다. 키 워드 는 색인 | 역할 을 하고 값 은 색인 과 연 결 된 데 이 터 를 표시 합 니 다. set 와 상대 적 으로 키워드 의 간단 한 집합 입 니 다. set 에 있 는 모든 요 소 는 - 하나의 키워드 만 포함 합 니 다. (2)set 의 교체 기 는 const 입 니 다. 요소 의 값 을 수정 할 수 없습니다. map 는 value 를 수정 할 수 있 지만 key 를 수정 할 수 없습니다. 그 이 유 는 map 와 set 는 키워드 정렬 에 따라 질서 성 을 확보 하기 때 문 입 니 다. key 를 수정 할 수 있다 면 먼저 이 키 를 삭제 하고 균형 을 조절 한 다음 에 수 정 된 키 값 을 삽입 하여 균형 을 조절 해 야 하기 때 문 입 니 다. 그러면 map 와 set 를 심각하게 파괴 합 니 다.의 구조 로 인해 iterator 가 실 효 됩 니 다. 변경 전 위 치 를 가리 키 는 지, 변 경 된 위 치 를 가리 키 는 지 모 르 겠 습 니 다. 따라서 STL 에 서 는 set 의 교체 기 를 const 로 설정 하고 교체 기의 값 을 수정 할 수 없습니다. map 의 교체 기 는 key 값 을 수정 할 수 없고 value 값 을 수정 할 수 있 습 니 다. (3)| map 는 아래 표 시 를 지원 합 니 다. set 는 아래 표 시 를 지원 하지 않 습 니 다. map 는 key 로 아래 표 시 를 할 수 있 습 니 다. map 의 아래 표 시 된 연산 자 [] 는 키 코드 를 아래 표 시 를 통 해 찾 을 수 있 습 니 다. 키 코드 가 존재 하지 않 으 면 이 키 코드 와 mapped type 형식의 기본 값 을 가 진 요 소 를 map 에 삽입 할 수 있 습 니 다. 따라서 아래 표 시 된 연산 자 []map 응용 프로그램 에 서 는 신중하게 사용 해 야 합 니 다. const map 는 사용 할 수 없습니다. 요소 삽입 을 원 하지 않 을 때 도 사용 하지 말 아야 합 니 다. mapped type 형식 은 기본 값 이 없어 도 사용 하지 말 아야 합 니 다. find 가 수 요 를 해결 할 수 있다 면 가능 한 find 를 사용 하 십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.