7.5.2 STL map 사용 방법 2

앞에서는 STL의 map을 insert, erase, find 멤버 메서드와 반복자를 사용하는 방법을 살펴보았습니다. 이번에는 인덱스 연산을 사용하는 방법으로 회원 관리 프로그램을 구현해 보아요.

먼저 반복자를 타입 재지정하세요.

AddMember 메서드부터 구현합시다.

추가할 회원 아이디를 입력받습니다.

키를 인자로 인덱스 연산을 사용하면 보관한 값을 구할 수 있습니다. 만약 없다면 인덱스 연산에 사용한 키와 0을 값으로 하는 pair를 보관한 후에 pair의 second를 반환합니다. 즉 결과는 0이예요.

결과가 0이 아니라면 이미 존재하는 아이디입니다. 메시지를 출력하고 기능을 종료하세요.

회원 이름을 입력받습니다.

키를 인자로 인덱스 연산을 사용한 표현을 대입 연산자 좌항에 두고 대입 연산자 우항에 값을 표현합니다. 따라서 여기에서는 다음처럼 사용할 수 있겠죠.

회원 삭제 기능을 구현합시다.

삭제할 회원 아이디를 입력받습니다.

키인 아이디를 인자로 인덱스 연산을 사용하여 값을 얻어오세요.

만약 값이 0이면 보관한 회원 개체가 없는 것입니다. 메시지 출력 후에 기능을 종료하세요.

보관한 회원 개체를 소멸하세요.

그리고 키를 인자로 인덱스 연산을 표현한 것을 대입 연산자 좌항에 표현하여 0을 대입하세요.

검색 기능에서도 인덱스 연산을 사용할 것입니다. 앞에서 FindMember 메서드는 상수화 멤버 메서드로 정의하였는데 map의 인덱스 연산은 상수화 멤버가 아닙니다. 불가피하게 FindMember 메서드를 상수화가 아닌 멤버 메서드로 수정하세요. 물론 헤더 파일도 수정하셔야겠죠.

회원 검색 기능을 구현합시다.

검색할 회원 아이디를 입력받으세요.

키인 아이디를 인자로 인덱스 연산을 사용하여 값을 얻어오세요.

만약 값이 0이면 보관한 회원 개체가 없는 것입니다. 메시지 출력 후에 기능을 종료하세요.

회원 정보를 출력하세요.

전체 보기 메서드인 ListAll을 구현합시다.

반복자를 사용하여 차례대로 회원 정보를 출력합니다.

여기에서는 인덱스 연산으로 값이 존재하지 않는 검색을 하였을 때 검색에 사용한 키와 0을 값인 pair를 보관합니다. 따라서 반복자의 간접 연산의 second로 값을 얻어온 후 0인지 판별하세요.

그리고 0이 아닐 때만 회원 정보를 출력하세요.

이제 소멸자를 구현합시다. 소멸할 때도 0이 아닐 때만 회원 개체를 소멸하세요.

다음은 앞에서 구현한 App.cpp 파일의 내용입니다.

다음은 FindMember메서드를 상수화 멤버 메서드를 비상수화 멤버 메서드로 수정한 App.h 파일 내용입니다. 나머지 코드는 7.5 STL의 map 사용 게시글을 참고하세요.


실습한 결과물은 언제나 휴일 프로그램 소스 사이트에 있습니다.