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


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;//여기서 에러
  • 2016년 01월 21일에 작성됨

조회수 455


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) ){}

  • 2016년 01월 21일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close