C++에서 std::map::find 함수 사용
이 기사에서는std::map::find
함수와 C++의 일부 대안을 활용하는 방법을 설명합니다.
std::map::find
함수를 사용하여 C++에서 주어진 키 값을 가진 요소 찾기
std::map
객체는 C++ 표준 템플릿 라이브러리의 연관 컨테이너 중 하나이며 정렬 된 데이터 구조를 구현하여 키 값을 저장합니다. 키는std::map
컨테이너에서 고유합니다. 따라서 기존 키를 사용하여 새 요소를 삽입하면 작업이 적용되지 않습니다. 그래도std::map
클래스의 일부 특수 멤버 함수는 키가 일치하면 기존 쌍에 새 값을 할당 할 수 있습니다 (예 :insert_or_assign
함수).
std::map
컨테이너의 장점은 로그 시간으로 수행 할 수있는 빠른 검색, 삽입 및 제거 작업을 포함합니다. 검색 조작은 키에 대한 참조를 승인하는find
멤버에 의해 제공됩니다. 주어진 키가std::map
객체에서 발견되면 해당 요소에 대한 반복기가 반환됩니다. 다른 한편으로, 주어진 키가 컨테이너에서 발견되지 않는다고 가정하면, 과거의 이터레이터 (map::end()
)가 반환됩니다.
다음 코드 스 니펫은string
쌍의map
컨테이너가 임의의 값으로 초기화 된 다음"h"
값이있는 키를 검색하는 간단한 사용 시나리오를 보여줍니다. 결과적으로,if-else
문으로 반환 된 반복자를 처리하여 요소 쌍을 인쇄하거나 주어진 키를 찾을 수 없다는 메시지를 출력합니다.
#include <iostream>
#include <map>
using std::cin;
using std::cout;
using std::endl;
using std::map;
using std::string;
int main() {
std::map<string, string> m1 = {
{"h", "htop"}, {"k", "ktop"}, {"t", "ttop"},
{"r", "rtop"}, {"w", "wtop"}, {"p", "ptop"},
};
string key = "h";
auto item = m1.find(key);
if (item != m1.end()) {
cout << "Key exists! - {" << item->first << ";" << item->second << "}\n";
} else {
cout << "Key does not exist!" << endl;
}
return EXIT_SUCCESS;
}
출력:
Key exists! - {h;htop}
contains
멤버 함수를 사용하여 주어진 요소가 C++의 맵에 존재하는지 확인
사용자가map
객체에 주어진 값의 쌍이 있는지 확인해야하는 경우 멤버 함수contains
를 사용할 수 있습니다. 이 함수는 C++ 20 버전부터std::map
컨테이너의 일부 였으므로 다음 코드 스 니펫을 실행하려면 컴파일러 버전을 알아야합니다. contains
함수는 키에 대한 참조를 가져 와서bool
값true
가 발견되면 반환합니다. 이 멤버 함수의 시간 복잡도도 로그입니다.
#include <iostream>
#include <map>
using std::cin;
using std::cout;
using std::endl;
using std::map;
using std::string;
int main() {
std::map<string, string> m1 = {
{"h", "htop"}, {"k", "ktop"}, {"t", "ttop"},
{"r", "rtop"}, {"w", "wtop"}, {"p", "ptop"},
};
string key = "h";
if (m1.contains(key)) {
cout << "Key Exists!" << endl;
} else {
cout << "Key does not exist!" << endl;
}
return EXIT_SUCCESS;
}
출력:
Key Exists!
또는cout
멤버 함수를 사용하여 주어진 키를 가진 요소 쌍이map
에 존재하는지 확인할 수 있습니다. 일반적으로cout
함수는 주어진 키가있는 요소의 수를 검색하는 데 사용되지만std::map
은 고유 한 키 값만 저장하므로 요소가 발견되면 프로세스는1
을 리턴합니다. 그렇지 않으면 요소를 찾을 수 없음을 나타 내기 위해 0 값이 반환됩니다.
#include <iostream>
#include <map>
using std::cin;
using std::cout;
using std::endl;
using std::map;
using std::string;
int main() {
std::map<string, string> m1 = {
{"h", "htop"}, {"k", "ktop"}, {"t", "ttop"},
{"r", "rtop"}, {"w", "wtop"}, {"p", "ptop"},
};
string key = "h";
if (m1.count(key)) {
cout << "Key Exists!" << endl;
} else {
cout << "Key does not exist!" << endl;
}
return EXIT_SUCCESS;
}
출력:
Key Exists!
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook