std::map에서 특정 key가 있는지 알아내려면
조회수 38959회
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 답변
-
key를 조사하는 함수는 map::find() 입니다.
원형:
- iterator find (const key_type& k);
- 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) ){}
댓글 입력