std::map에서 특정 key가 있는지 알아내려면

조회수 38957회

std::map에서 키가 이미 있는지 없는지 알아내고 싶은데 어떻게 해야 하나요? 제 코드는 에러를 내네요

소스 코드

typedef map<string,string>::iterator mi;
map<string, string> m;
m.insert(make_pair("f","++--"));
pair<mi,mi> p = m.equal_range("f"); //equal_range를 써도 되는지 잘 모르겠어요
cout << p.first;//여기서 에러

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    key를 조사하는 함수는 map::find() 입니다.

    원형:

    1. iterator find (const key_type& k);
    2. const_iterator find (const key_type& k) const;

    파라미터:

    • k: 찾고 싶은 key

    return 값:

    • key를 찾은 경우: element의 iterator
    • key를 못 찾은 경우 : map::end
    if ( m.find("f") == m.end() ) {
      // not found
    } else {
      // found
    }
    



    iterator가 아니라 그냥 조사만 하는 경우라면 std::count()을 쓰는게 더 편할 수도 있습니다.

    원래 count()는 원소가 몇 개인지 세는 함수이지만 std::map container의 원소들은 하나하나가 다 고유(unique)한 값이기 때문에 key가 존재하면 1을, 존재하지 않으면 0을 return합니다.

    따라서 그냥 검사만 하는 경우는 다음과 같이 써 주세요

    if ( m.count(key) ){}

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)