STL 학습 노트 맵 사용

3668 단어 C++primerACM
pair 형식
template
두 개의 수 를 저장 하 는데 각각 first (예 를 들 어 배열 아래 표) 와 second (배열 아래 표 시 된 요소) 입 니 다.  
first 요 소 를 키워드 라 고 합 니 다.
map 형식
map (맵) 는 데이터 구조 입 니 다.
map 의 모든 노드 에 pair 형식의 대상 을 저장 합 니 다.
map 의 모든 노드 는 first 에 따라 어 릴 때 부터 큰 순서 로 정렬 됩 니 다.(자체 비교 배열 아래 표 시 는 작은 것 에서 큰 것 으로 배열)
주: first 의 크기 는 스스로 정의 할 수 있 습 니 다.
맵 이 준 인터페이스의 세 가지 인 자 를 살 펴 보 겠 습 니 다.
templatekey,     class T,     class Pred = less,     class A = allocator>
                                                    //비교 함수
multimap 형식
각 노드 의 pair 의 scoend 값 을 중복 할 수 있 습 니 다.
(map 에서 중복 불가)
map 의 [key],  key 는 관건 적 인 값 으로 배열 아래 표 시 된 것 과 유사 합 니 다.
key 는 map 에 존재 합 니 다. > key 와 scoend 가 일일이 대응 합 니 다 (중복 되 지 않 음) - > scoend 의 값 을 되 돌려 주 는 참조
key 는 map 에 존재 하지 않 습 니 다. > 키 워드 를 key 로 하 는 요 소 를 추가 합 니 다. 값 은 무 참 구조 함수 로 초기 화 되 고 인용 을 되 돌려 줍 니 다.
활용 단어 참조
1. map 의 밑바닥 은 빨간색 과 검은색 나무 로 삽입 이 느 리 고 빨리 찾 습 니 다.
2. 무 거 운 것 을 제거한다
3. 자동 정렬
맵 의 각종 조작 인터페이스
eg: 
        map  v;
        v.size();
        v.insert();
      v.insert(        pair(1, "student_one")        ); 
     v.clear();
     v.empty();
     v.erase(key);
    v. find();
        맵 의 달력 용 교체 기
     
실천 은 진 리 를 검증 하 는 유일한 기준 이다.
과일 시간 제한: 2000 / 1000 MS (Java / 기타)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 9648    Accepted Submission (s): 3846 Problem Description 여름 이 왔 습 니 다 ~ ~ 즐 거 웠 습 니 다. 하하, 과일 이 많 습 니 다 ~ 조 이 는 크 지 않 은 과일 가 게 를 운영 하고 있 습 니 다. 그 는 생존 의 길 은 고객 들 에 게 가장 인기 있 는 과일 을 경영 하 는 것 이 라 고 생각 합 니 다. 지금 은 과일 판매 상황 에 대한 명세 서 를 원 합 니 다. 그러면 조 이 는 모든 과일 판매 상황 을 쉽게 파악 할 수 있 습 니 다. Input 첫 줄 의 정수 N (0 각 조 의 테스트 데이터 의 첫 줄 은 정수 M (0) 입 니 다. 출력 은 각 그룹의 테스트 데이터 에 대해 조판 형식 을 정확하게 출력 하 십시오 (샘플 출력 을 분석 하 십시오)의 과일 판매 현황 명세서. 이 명세 서 는 모든 과일의 생산지, 명칭 과 판매 수량 에 대한 정 보 를 포함한다. 과일 은 생산지 별로, 산 지 는 알파벳 순 으로, 같은 생산지 의 과일 은 명칭 순 으로, 명칭 은 알파벳 순 으로 순 서 를 매 긴 다. 두 조 의 테스트 데이터 사이 에 빈 줄 이 하나 있다. 마지막 조 의 테스트 데이터 이후 빈 줄 이 없다. Sample Input15apple shandong 3pineapple guangdong 1sugarcane guangdong 1pineapple guangdong 3pineapple guangdong 1 Sample Outputguangdong   |----pineapple(5)   |----sugarcane(1)shandong
   |----apple(3)
분석:   이것 은 2 차원 맵 을 사용 해 야 합 니 다. 키 값 은 하나 에 대응 합 니 다.  map,  나무 라 고 상상 할 수 있 습 니 다.
옮 겨 다 니 려 면 first 멤버 와 second 멤버 가 필요 합 니 다.    잘 이해 하 세 요. 여기 서 배열 을 사용 하 는 것 은 배열 이 수시로 업데이트 되 기 때 문 입 니 다.  지 울 수 있 습 니 다.
    출력 형식의 빈 줄 문 제 를 주의 하 십시오.
문제 풀이:
#include 
#include 
#include 
using namespace std;


int n, m;
//      -->       ——>     
//map   : 
int main()
{
        cin >> n;
        while(n--)
        {
                map< string, map  > gather;
                cin >> m;
                while(m--)
                {
                        string breed, origin;
                        int num;
                        cin >> breed >> origin >> num;
                        gather[origin][breed] += num;
                }

                for(auto i = gather.begin(); i != gather.end(); ++i)
                {
                        cout << i->first << endl;
                        for(auto j = i->second.begin(); j != i->second.end(); ++j )
                                cout << "   |----" << j->first << '(' << j->second << ')' << endl;
                }
                if(n != 0)
                cout << endl;
        }
}


좋은 웹페이지 즐겨찾기