7.5.1 STL map 사용 방법 1

이제 첫 번째 방법인 insert, find, erase, iterator 사용하는 방법으로 구현해 보기로 해요.

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

먼저 회원 추가 기능을 구현합시다.

먼저 주요 키인 아이디를 입력받으세요.

같은 키를 갖는 회원 개체가 있는지 탐색하세요.

map이나 list에서는 알고리즘 find 혹은 find_if 메서드를 사용해서 탐색했었죠. map도 알고리즘 find와 find_if를 사용할 수 있어요. 하지만 이는 순차 탐색하는 것이며 빠른 탐색을 원하면 map에 제공하는 멤버 find 메서드를 사용하세요.

만약 반환 값이 end와 같지 않다면 탐색이 성공한 것입니다.

탐색이 성공했다는 것은 이미 존재하는 아이디이므로 메시지를 출력하고 기능을 종료하세요.

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

보관할 데이터는 id를 키로 회원 개체를 값으로 하는 pair 입니다.

추가할 때 insert 메서드를 사용하세요. vector와 list와 다르게 insert 메서드에 위치 정보를 전달하지 않습니다. 이는 map 내부에서 입력받은 pair의 key 값으로 탐색할 위치를 찾아 보관하기 때문이예요.

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

삭제할 아이디를 입력받으세요.

삭제할 데이터를 찾을 때도 find 메서드를 사용하세요.

만약 반환한 위치가 end와 같다면 탐색 실패입니다. 메시지를 출력하고 기능을 종료하세요.

map에서는 키와 쌍을 값으로 하는 pair를 보관했습니다. 따라서 반복자의 간접 연산은 pair 형식의 자료입니다. pair 형식은 first 멤버가 key이고 second 멤버가 second입니다. 반복자의 간접 연산으로 접근한 pair의 second 멤버인 회원 개체를 소멸하세요.

vector와 list처럼 erase 메서드로 반복자 위치에 보관한 자료를 지우세요.

검색 기능도 삭제 기능과 비슷합니다.

검색할 아이드를 입력받아 검색하세요.

검색 실패일 때 메시지를 출력하고 기능을 종료하세요.

반복자의 간접 연산으로 접근한 pair의 second 멤버인 회원 개체의 정보를 출력하세요.

전체 보기는 반복자를 이용합니다.

반복자의 간접 연산으로 접근한 pair의 second 멤버인 회원 개체의 정보를 출력하세요.

소멸자에서는 App 내부에서 생성한 회원 개체를 모두 소멸하세요.

다음은 앞에서 구현한 App.cpp 파일의 내용입니다. 다른 소스 코드는 이전 게시글 을 참고하세요.


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