산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

인쇄 예제가 있는 C++ 표준 템플릿 라이브러리(STL)의 맵

std::map이란 무엇입니까?

C++에서 MAP 매핑된 형식으로 항목을 저장하는 연관 컨테이너입니다. 맵의 각 항목은 키-값과 매핑된 값으로 구성됩니다. 매핑된 두 값은 동일한 키 값을 공유할 수 없습니다.

키 값은 요소를 고유하게 정렬하고 식별하는 데 유용합니다. 매핑된 값은 키와 연결된 콘텐츠를 저장하기 위한 것입니다. 두 가지 유형은 다를 수 있지만 멤버 유형은 두 가지를 결합한 pair 유형을 통해 결합합니다.

이 C++ 자습서에서는 다음을 배우게 됩니다.

std::map을 사용하는 이유

지도를 사용하는 이유는 다음과 같습니다.

구문:

std::map을 선언하려면 다음 구문을 사용하십시오.

std::map<key_datatype, value_datatype>map_name; 

예:

map<string, int> my_map; 

my_map이라는 맵을 선언했습니다. 지도에는 key라는 문자열이 있습니다. 으로서의 데이터 유형 및 정수 데이터 유형.

회원 유형:

멤버 함수는 다음 멤버 유형을 매개변수 또는 반환 유형으로 사용할 수 있습니다.

내장 기능

std::map은 내장 함수와 함께 제공됩니다. 그 중 일부는 다음과 같습니다.

지도 요소 반복

맵 요소를 반복할 수 있습니다. 반복자를 만들고 이를 사용하기만 하면 됩니다.
예:

예시 1:

#include <iostream>
#include <string>
#include <map> 

using namespace std;
int main() {

	map<int, string> Students;

	Students.insert(std::pair<int, string>(200, "Alice"));

	Students.insert(std::pair<int, string>(201, "John"));

	cout << "Map size is: " << Students.size() << endl;

	cout << endl << "Default map Order is: " << endl;

	for (map<int, string>::iterator it = Students.begin(); it != Students.end(); ++it) {

		cout << (*it).first << ": " << (*it).second << endl;
	}
}

출력:

다음은 코드의 스크린샷입니다.

코드 설명:

  1. iostream 헤더 파일을 코드에 포함하여 해당 기능을 사용합니다.
  2. 문자열 헤더 파일을 코드에 포함하여 해당 기능을 사용합니다.
  3. 지도 헤더 파일을 코드에 포함하여 해당 기능을 사용하세요.
  4. 호출하지 않고 클래스를 사용하려면 std 네임스페이스를 코드에 포함합니다.
  5. main() 함수를 호출합니다. {는 함수 본문의 시작을 표시합니다.
  6. 키가 정수이고 값이 문자열인 학생이라는 지도를 만듭니다.
  7. 학생 지도에 값을 삽입합니다. 200의 키와 Alice의 값이 지도에 삽입됩니다.
  8. 학생 지도에 값을 삽입합니다. 201의 키와 John의 값이 지도에 삽입됩니다.
  9. size() 함수를 사용하여 Students라는 지도의 크기를 가져옵니다. 2를 반환해야 합니다.
  10. 콘솔에 텍스트를 인쇄합니다.
  11. for 루프를 사용하여 이름이 Students인 지도의 요소를 반복하는 반복자를 생성합니다.
  12. 콘솔에서 지도 학생의 값을 인쇄합니다.
  13. for 루프 본문의 끝입니다.
  14. main() 함수 본문의 끝

std::map에 데이터 삽입

insert() 함수를 사용하여 std::map에 항목을 입력할 수 있습니다. std::map 키는 고유해야 합니다.

따라서 먼저 각 키가 맵에 있는지 여부를 확인합니다. 존재하는 경우 항목이 삽입되지 않지만 기존 항목에 대한 반복자를 반환합니다. 없는 경우 항목이 삽입됩니다.

함수에는 다음과 같은 변형이 있습니다.

insert_or_assing() 함수는 insert() 함수와 같은 방식으로 작동하지만, 주어진 키가 이미 맵에 있으면 그 값이 수정됩니다.

예시 2:

#include <map>
#include <iostream>

using namespace std;

int main() {

	map<int, int> m{ {1,3} , {2,4} , {3,5} };

	m.insert({ 5, 6 });
	m.insert({ 1, 8 });

	m.insert_or_assign(1, 6);  
	
	cout << "Key\tElement\n";
	for (auto itr = m.begin(); itr != m.end(); ++itr) {
		cout << itr->first << '\t' << itr->second << '\n';
	}
	return 0;
}

출력:

다음은 코드의 스크린샷입니다.

코드 설명:

  1. 지도 헤더 파일을 코드에 포함하여 해당 기능을 사용하세요.
  2. iostream 헤더 파일을 코드에 포함하여 해당 기능을 사용합니다.
  3. 호출하지 않고 클래스를 사용하려면 std 네임스페이스를 코드에 포함합니다.
  4. main() 함수를 호출합니다. {는 함수 본문의 시작을 표시합니다.
  5. 키가 정수이고 값이 정수인 m이라는 맵을 만듭니다. 지도에 3개의 항목이 작성되었습니다.
  6. 지도에 새 항목 삽입 m. 키 5와 값 6이 지도에 삽입됩니다.
  7. 이미 존재하는 키로 항목을 만들려고 합니다. 키 1은 이미 지도에 존재하므로 입력이 되지 않습니다.
  8. insert_or_assign() 함수를 사용하여 기존 항목을 삽입하거나 수정합니다. 키 1이 이미 존재하므로 값이 6으로 변경됩니다.
  9. 콘솔에 일부 텍스트를 인쇄합니다. "\t" 문자는 수평 공간을 만들고 "\n" 문자는 마우스 커서를 다음 줄로 이동합니다.
  10. for 루프를 사용하여 itr이라는 반복자를 생성하여 m이라는 지도의 요소를 반복합니다.
  11. 콘솔에 맵 m의 값을 출력합니다. "\t" 문자는 각 키와 해당 값 사이에 가로 공백을 만듭니다. 대조적으로 "\n" 문자는 모든 반복 후에 마우스 커서를 다음 줄로 이동합니다.
  12. for 루프 본문의 끝입니다.
  13. 프로그램은 성공적으로 완료되면 값을 반환해야 합니다.
  14. main() 함수 본문의 끝

지도에서 검색

find() 함수를 사용하여 키로 맵의 요소를 검색할 수 있습니다. 키를 찾을 수 없으면 함수는 std::map::end를 반환합니다. 그렇지 않으면 검색된 요소의 반복자가 반환됩니다.

예시 2:

#include <iostream>
#include <string>
#include <map> 
using namespace std;
int main() {
	map<int, string> Students;
	Students.insert(std::pair<int, string>(200, "Alice"));
	Students.insert(std::pair<int, string>(201, "John"));
	std::map<int, string>::iterator it = Students.find(201);
	if (it != Students.end()) {
		std::cout << endl << "Key 201 has the value: => "<< Students.find(201)->second << '\n';
	}
}

출력:

다음은 코드의 스크린샷입니다.

코드 설명:

  1. 오류 없이 기능을 사용하려면 iostream 헤더 파일을 코드에 포함하세요.
  2. 오류 없이 기능을 사용하려면 문자열 헤더 파일을 코드에 포함하세요.
  3. 오류 없이 기능을 사용하려면 지도 헤더 파일을 코드에 포함하세요.
  4. 호출하지 않고 클래스를 사용하려면 std 네임스페이스를 코드에 포함합니다.
  5. main() 함수를 호출합니다. {는 main() 함수 본문의 시작을 표시합니다.
  6. 키가 정수이고 값이 문자열인 학생이라는 지도를 만듭니다.
  7. 학생 지도에 값을 삽입합니다. 200의 키와 Alice의 값이 지도에 삽입됩니다.
  8. 학생 지도에 값을 삽입합니다. 201의 키와 John의 값이 지도에 삽입됩니다.
  9. 201이라는 키와 연결된 값을 찾습니다.
  10. if 문을 사용하여 키 값이 있는지 확인합니다.
  11. 콘솔의 일부 텍스트와 함께 키 값을 인쇄합니다.
  12. if 문의 본문 끝.
  13. main() 함수 본문의 끝

지도에서 데이터 삭제

지우기() 함수를 사용하여 맵에서 값을 삭제할 수 있습니다. 삭제할 요소를 가리키는 반복자를 만들기만 하면 됩니다. 그런 다음 iterator는 erase() 함수로 전달됩니다.

예시 3:

#include <iostream>
#include <string>
#include <map>

using namespace std;
int main() {

	map<std::string, int> my_map;

	my_map.insert(std::make_pair("cow", 1));

	my_map.insert(std::make_pair("cat", 2));

	my_map["lion"] = 3;

	map<std::string, int>::iterator it = my_map.find("cat");

	my_map.erase(it);

	for (map<string, int>::iterator it = my_map.begin(); it != my_map.end(); ++it)

		cout << (*it).first << ": " << (*it).second << endl;

  return 0;
}

출력:

다음은 코드의 스크린샷입니다.

코드 설명:

  1. iostream 헤더 파일을 코드에 포함하여 해당 기능을 사용합니다.
  2. 문자열 헤더 파일을 코드에 포함하여 해당 기능을 사용합니다.
  3. 지도 헤더 파일을 코드에 포함하여 해당 기능을 사용하세요.
  4. 호출하지 않고 클래스를 사용하려면 std 네임스페이스를 코드에 포함합니다.
  5. main() 함수를 호출합니다. {는 main() 함수 본문의 시작을 표시합니다.
  6. 키가 문자열이고 값이 정수인 my_map이라는 지도를 만듭니다.
  7. my_map 지도에 값을 삽입합니다. Cow의 키와 1의 값이 지도에 삽입됩니다.
  8. my_map 지도에 값을 삽입합니다. Cat의 키와 2의 값이 지도에 삽입됩니다.
  9. 사자의 키로 my_map 지도에 값 3을 추가합니다.
  10. 키 고양이를 찾는 my_map 지도를 반복하는 반복자를 만듭니다.
  11. 반복자가 가리키는 요소를 삭제합니다.
  12. 반복자를 사용하여 지도 my_map의 요소를 처음부터 끝까지 반복합니다.
  13. 콘솔에서 my_map 지도의 내용을 인쇄합니다.
  14. 프로그램은 성공적으로 완료되면 출력을 반환해야 합니다.
  15. main() 함수 본문의 끝입니다.

요약:


C 언어

  1. C 표준 라이브러리 함수
  2. 예제가 있는 C++의 연산자:정의, 유형 및 프로그램
  3. C++ do… while 루프 예제
  4. EXAMPLE이 있는 C++ Switch Case 문
  5. 예제를 사용한 C++ 배열 동적 할당
  6. 예제가 있는 C++ 포인터
  7. 예제를 사용한 C++ 연산자 오버로딩
  8. 예제가 있는 C++의 std::list
  9. 프로그램 예제가 있는 C++ 함수
  10. 구조체와 클래스의 차이점:C++ 예제로 설명