C++ Std::Map::Erase 예제

C Std Map Erase Yeje



“std::map”에 사용할 수 있는 많은 작업 중에서 “erase” 기능은 키를 기반으로 요소를 제거하는 중요한 도구로 두드러집니다. 'std::map'은 키-값 쌍으로 구성된 조직화된 연관 컨테이너입니다. 'std::map' 내의 요소 배열은 키에 따라 일관되게 정렬되어 키 값을 기반으로 검색, 삽입, 삭제와 같은 효과적인 작업을 용이하게 합니다.

C++ 영역 내에서 'std::map::erase' 함수는 'std::map' 클래스의 멤버 함수 역할을 하여 맵에서 특정 요소를 제거할 수 있습니다. 다양한 형태로 제공되므로 지울 요소를 유연하게 지정할 수 있습니다. 이 기사에서는 'std::map::erase'의 세부 사항을 자세히 살펴보고 다양한 예를 제공하여 다양성을 보여줍니다.







예 1: 키로 지우기

'std::map'에서 키로 요소를 지우는 기능은 C++ 표준 템플릿 라이브러리에서 제공하는 기본 기능입니다. 이 작업은 프로그램에서 키-값 쌍을 관리하고 조작해야 할 때 일반적으로 사용되며 해당 키를 기반으로 특정 요소를 제거하는 편리한 방법을 제공합니다. 'std::map'을 사용하여 맵을 생성하고 키별로 요소를 지운 다음 수정된 맵을 표시하는 방법을 보여주는 예제를 생성하겠습니다.



#include
#include <지도>

정수 메인 ( ) {
표준::지도 < 정수, 표준::문자열 > 마이맵;
마이맵 [ 1 ] = '빨간색' ;
마이맵 [ 2 ] = '파란색' ;
마이맵 [ ] = '녹색' ;

myMap.erase ( 2 ) ;

~을 위한 ( const 자동 & 쌍 : myMap ) {
표준::cout << 쌍.첫번째 << ': ' << 쌍.초 << 표준::endl;
}

반품 0 ;
}


이 예에서는 입력/출력 작업과 'std::map' 컨테이너를 각각 사용할 수 있도록 과 같은 필수 C++ 표준 라이브러리를 포함하는 것으로 시작합니다. 'main' 함수 내에서 정수 키가 해당 문자열 값과 연결된 'myMap'이라는 'std::map'을 초기화합니다. 색상을 나타내는 세 개의 키-값 쌍이 맵에 추가됩니다. 키 1은 'Red', 키 2는 'Blue', 키 3은 'Green'입니다. 그런 다음 'erase' 멤버 함수를 사용합니다. std::map” 클래스를 사용하여 맵에서 키 2와 관련된 요소를 제거합니다. 결과적으로, 이 작업 후에는 '파란색' 색상이 더 이상 지도의 일부가 아닙니다.

지도의 결과 상태를 보여주기 위해 'myMap' 내의 각 키-값 쌍을 반복하는 'for' 루프를 사용합니다. 루프 내부의 'std::cout' 개체를 활용하여 각 키-값 쌍을 콘솔에 인쇄합니다. 마지막으로 'return 0' 문은 프로그램의 성공적인 실행을 알리는 'main' 함수를 마무리합니다.

출력에는 키 2('Blue')가 있는 요소가 지워진 후 'std::map'에 나머지 키-값 쌍이 표시되어 '1: Red' 및 '3: Green' 출력이 생성됩니다.

예 2: 반복자로 지우기

C++에서 반복자는 컨테이너 내 요소 탐색을 용이하게 하는 개체로, 요소에 대한 액세스, 수정 또는 제거 수단을 제공합니다. 'std::map::erase' 함수를 반복자와 함께 사용하여 요소를 제거할 수도 있습니다.

예는 다음과 같습니다.

#include
#include <지도>

정수 메인 ( ) {
표준::지도 < 정수, 표준::문자열 > 과일폴더;
과일폴더 [ 1 ] = '망고' ;
과일폴더 [ 2 ] = '주황색' ;
과일폴더 [ ] = '파인애플' ;
과일폴더 [ 4 ] = '포도' ;

자동 it = FruitMap.find ( 2 ) ;

만약에 ( 그것 ! = 과일맵.end ( ) ) {
과일지도.삭제 ( 그것 ) ;
}

~을 위한 ( const 자동 & 쌍 : 과일맵 ) {
표준::cout << 쌍.첫번째 << ': ' << 쌍.초 << 표준::endl;
}

반품 0 ;
}


제공된 C++ 코드는 키-값 쌍을 저장하기 위해 'fruitMap'이라는 'std::map'을 선언하고 정수를 해당 과일 이름과 연결하는 것으로 시작합니다. '망고', '오렌지', '파인애플', '포도'라는 네 가지 과일에 대한 항목으로 맵을 채웁니다. 그런 다음 'find' 함수를 사용하여 'fruitMap' 내에서 키 값이 2인 요소를 가리키는 반복자(it)를 얻습니다. 그런 다음 지정된 키를 가진 요소가 맵에 존재하는지 확인하기 위해 반복자가 'end()'와 같지 않은지 확인합니다.

조건부 블록에서는 'erase' 함수를 사용하여 'it' 반복자가 가리키는 요소를 지웁니다. 마지막으로 'for' 루프를 사용하여 수정된 'fruitMap'의 나머지 요소를 반복합니다.

최종 출력에는 삭제 후 수정된 'fruitMap' 콘텐츠가 표시됩니다.

예 3: 범위 지우기

C++의 'std::map' 컨테이너는 지정된 범위 내의 요소를 지우는 편리한 방법을 제공합니다. 'erase' 기능을 사용하면 삭제할 범위의 시작과 끝을 나타내는 반복자를 기반으로 맵에서 요소를 제거할 수 있습니다.

이제 예를 들어 'std::map'을 사용하여 범위를 지우는 개념을 살펴보겠습니다.

#include
#include <지도>

정수 메인 ( ) {
표준::지도 < 정수, 표준::문자열 > 새로운 지도;
새로운 지도 [ 1 ] = '말' ;
새로운 지도 [ 2 ] = '사자' ;
새로운 지도 [ ] = '호랑이' ;
새로운 지도 [ 4 ] = '고양이' ;

newMap.erase ( newMap.lower_bound ( 2 ) , newMap.upper_bound ( ) ) ;

~을 위한 ( const 자동 & 쌍 : newMap ) {
표준::cout << 쌍.첫번째 << ': ' << 쌍.초 << 표준::endl;
}

반품 0 ;
}


프로그램은 정수 키를 해당 문자열 값과 연결하는 'newMap'이라는 'std::map'을 선언하는 것으로 시작됩니다. 그런 다음 대괄호 연산자를 사용하여 키-값 쌍으로 맵을 채웁니다. 예를 들어 (1, 'Horse'), (2, 'Lion'), (3, 'Tiger') 및 (4, 'Cat')의 키-값 쌍을 'newMap'에 할당합니다.

다음으로 중요한 작업은 반복자를 사용하여 맵에서 요소를 지우는 것입니다. 삭제 기능은 'newMap.lower_bound(2)' 및 'newMap.upper_bound(3)' 인수와 함께 사용됩니다. 이렇게 하면 (2, 3) 범위에 속하는 키가 있는 요소가 지워집니다. 즉, 지도에서 'Lion' 및 'Tiger' 항목을 제거합니다. 이 작업 후 맵에는 'Horse' 및 'Cat'에 해당하는 키 1과 4가 있는 요소만 포함됩니다.

마지막으로 범위 기반 'for' 루프를 사용하여 맵의 나머지 요소를 반복하고 해당 키-값 쌍을 콘솔에 인쇄합니다.

결과적으로 출력에는 다음이 표시됩니다.

예 4: 조건자를 기반으로 지우기

술어를 기반으로 한 삭제는 지정된 조건이나 기준에 따라 컨테이너와 같은 데이터 구조에서 요소를 제거하는 것을 의미합니다. 'std::map::erase'는 조건부로 요소를 제거하기 위해 조건자 함수와 함께 사용될 수도 있습니다. 다음 예를 고려해 보겠습니다.

#include
#include <지도>
#include <알고리즘>

정수 메인 ( ) {

표준::지도 < 정수, 표준::문자열 > 마이맵 = {
{ 1 , '1월' } ,
{ 2 , '2월' } ,
{ , '3월' } ,
{ 4 , '4월' } ,
{ 5 , '5월' }
} ;

자동 술어 = [ ] ( const 표준::쌍 < 정수, 표준::문자열 >& 요소 ) {
반품 요소.초.길이 ( ) < 5 ;
} ;

myMap.erase ( 표준::remove_if ( myMap.begin ( ) , myMap.end ( ) , 술어 ) , myMap.end ( ) ) ;

표준::cout << ' \N 조건자를 기반으로 요소를 지운 후 매핑:' << 표준::endl;
~을 위한 ( const 자동 & 쌍 : myMap ) {
표준::cout << 쌍.첫번째 << ': ' << 쌍.초 << 표준::endl;
}

반품 0 ;
}


프로그램은 필요한 헤더 파일을 포함하는 것으로 시작됩니다. 'myMap'이라는 'std::map'이 'main' 함수에서 선언되고 초기화됩니다. 여기에는 월 이름과 해당 숫자 값을 나타내는 키-값 쌍이 포함되어 있습니다. 이어서, '람다' 함수(술어)가 정의됩니다. 이 'lambda' 함수는 'std::remove_if' 알고리즘의 조건자 역할을 합니다. 맵 요소와 연결된 문자열 값의 길이가 5자 미만인지 확인합니다.

그런 다음 'std::remove_if' 알고리즘은 'std::map'의 'erase' 기능과 함께 사용됩니다. 이 조합은 조건자의 유효성을 기반으로 맵에서 요소를 제거합니다.

프로그램을 실행한 후 5개 미만의 키를 가진 요소가 원본 맵에서 제거되고 'std::map'을 사용하여 조건자를 기반으로 삭제하는 방법을 보여줍니다.

결론

결론적으로 'std::map::erase' 함수는 'std::map'에서 요소를 제거하는 C++의 다용도 도구입니다. 키, 반복자, 범위 또는 조건자 기준으로 지우는 경우 'std::map::erase' 기능은 유연성과 사용 편의성을 제공합니다. 이 기능을 익히면 C++ 개발자는 'std::map' 컨테이너 내의 데이터를 효율적으로 관리하고 조작하여 코드를 더 강력하고 유지 관리하기 쉽게 만들 수 있습니다.