2009-06-22 3 views

답변

3

std::map을 의미하면 값 쌍을 저장합니다. 각 쌍에서 첫 번째 값을 키라고하며 연관된 다른 값을 빠르게 조회하는 데 사용할 수 있습니다.

당신은 쓸 수 있습니다 :

std::map<std::string, int> ages; 
ages["Fred"] = 52; 
ages["Sue"] = 31; 

std::cout << "Fred's age is " << ages["Fred"] << std::endl; 
0

은지도 무엇입니까 - 그것은 관련 값의 쌍을 보유하는 데이터 구조입니다. 각 쌍은 키와 값으로 구성됩니다. 지도의 모든 키는 고유해야하지만 다른 키는 동일한 값을 가질 수 있습니다. 지도는 종종 사전과 마찬가지로 조회 테이블을 캐싱하거나 구현하는 데 사용됩니다 (실제로 어떤 언어로지도가 호출되는지).

지도를 C++로 구현하는 방법은 간단합니다. 그렇지 않습니다. std :: map 또는 그 변형 중 하나를 사용합니다.

0

지도는 컬렉션 유형입니다. STL (Standard Template Library)에서 C++로 구현됩니다. 여기에 라이브러리 설명서의 공식 설명이 나와 있습니다.

Map은 Key 유형의 객체를 Data 유형의 객체와 연관시키는 Sorted Associative Container입니다. Map은 Pair Associative Container입니다. 즉, 값 유형이 쌍입니다. 또한 고유 연관 컨테이너이기 때문에 두 요소가 동일한 키를 가지고 있지 않습니다. 지도에는지도에 새 요소를 삽입해도 기존 요소를 가리키는 반복자가 무효화되지 않는다는 중요한 특성이 있습니다. 맵에서 요소를 지우는 것은 실제로 지우는 요소를 가리키는 반복자를 제외하고는 어떤 반복자도 무효화하지 않습니다.

struct ltstr 
{ 
    bool operator()(const char* s1, const char* s2) const 
    { 
    return strcmp(s1, s2) < 0; 
    } 
}; 

int main() 
{ 
    map<const char*, int, ltstr> months; 

    months["january"] = 31; 
    months["february"] = 28; 
    months["march"] = 31; 
    months["april"] = 30; 
    months["may"] = 31; 
    months["june"] = 30; 
    months["july"] = 31; 
    months["august"] = 31; 
    months["september"] = 30; 
    months["october"] = 31; 
    months["november"] = 30; 
    months["december"] = 31; 

    cout << "june -> " << months["june"] << endl; 
    map<const char*, int, ltstr>::iterator cur = months.find("june"); 
    map<const char*, int, ltstr>::iterator prev = cur; 
    map<const char*, int, ltstr>::iterator next = cur;  
    ++next; 
    --prev; 
    cout << "Previous (in alphabetical order) is " << (*prev).first << endl; 
    cout << "Next (in alphabetical order) is " << (*next).first << endl; 
} 

Here는 STL의지도 유형의 전체 문서입니다.

이 도움이 되었기를 바랍니다.

관련 문제