C++에서 std::map::find 함수 사용

Jinku Hu 2023년10월12일
  1. std::map::find함수를 사용하여 C++에서 주어진 키 값을 가진 요소 찾기
  2. contains멤버 함수를 사용하여 주어진 요소가 C++의 맵에 존재하는지 확인
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함수는 키에 대한 참조를 가져 와서booltrue가 발견되면 반환합니다. 이 멤버 함수의 시간 복잡도도 로그입니다.

#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!
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

관련 문장 - C++ Map