set/multiset의 max값

  • wody34
    wody34

    이번 알고스팟 겨울캠프의 기하쪽 문제를 풀고있습니다. G번 City Horizon에서 multiset을 이용하고 있는데 max 구하는 법을 몰라 일일히 돌면서 찾았습니다(-_-;;) 기본적으로 set/multiset은 내부적으로 정렬을 하고 있다고 알고 있고 또 강의때 주신 stl pdf에서 max()라는 함수가 있다고 되어있는데 컴파일러가 없다고 하네요. max값 구하는 방법 좀 알려주세요.


    13년 전
5개의 댓글이 있습니다.
  • 김우현
    김우현

    multiset의 rbegin 메소드를 이용한 방법이 있습니다.
    s에 적어도 하나 이상의 원소가 있다고 가정하겠습니다.

    multiset s;
    int max_val = *s.rbegin();


    13년 전 link
  • wody34
    wody34

    감사합니다. 덕분에 시간 많이 줄였어요ㅋㅋ int max_val = *(s.end()-1) 은 안되길래 포기하고 있었어요ㅋㅋ


    13년 전 link
  • hyunhwan
    hyunhwan

    s.end()-1 과 같은 접근은 set의 iterator가 random access가 불가능한 iterator 이기 때문에 문제가 발생합니다 :)


    13년 전 link
  • wookayin
    wookayin

    rbegin() 이 가장 심플한 방법이구요..

    map, set 류들의 iterator는 순회(--, ++)만 가능하고 포인터 덧셈/뺄셈 연산이 안됩니다.
    다만 set::iterator it = M.end(); it--; maxValue = *it; 처럼 할수는 있구요...

    맵의 연산자를 바꿔주면 begin()으로도 되는데 (예컨대 multiset > S; maxValue = *S.begin(); 처럼) 별로 좋아보이진 않네여 ㅠㅠ


    13년 전 link
  • wody34
    wody34

    그렇군요! 답변 모두 감사합니다^^


    13년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.