map 컨테이너의 올바른 사용법

비정상적인 동작은 매우 중요합니다

얼마전 마소(여기서 마소는 마이크로소프트웨어라는 국내에서 제법 오래된 IT 전문잡지입니다. 보통 마소하면 마이크로소프트를 지칭하는 일이 많습니다만 아무튼 마이크로소프트웨어입니다)에 기고된 글을 하나 보았는데, 요약하면 “API를 사용할 때는 정상적인 동작 뿐만 아니라 비정상적인 동작에 대한 의문을 품는 자세가 필요하며, API 도큐먼트를 충분히 숙지하여 API의 정상적인 동작과 비정상적인 동작 방식에 대해 잘 알아두는 것이 중요하다” 라는 내용입니다.

API를 작성하는 개발자의 입장에서는 API의 주석이나 도큐먼트에 해당 함수의 동작 방식에 대해서 충분한 정보를 제공해야하겠고, 사용하는 개발자의 입장에서는 API의 사용법에 대해서 충분히 숙지해야 하겠지요. API 문서 작성은 꼼꼼하게

map 컨테이너의 중복 키 처리

이 포스트에서는 map 클래스의 정확한 사용법에 대해서 간단히 얘기하고자 합니다. map 클래스에 특정 키/값 쌍을 넣을때 사용하는 구문은 다음과 같습니다

idmap.insert(pair(1, "my name")) ;

많은 map 클래스의 예제들이 쉽게 사용하는 형태인데, insert 함수의 정확한 사용법은 다음과 같습니다.

typedef map container ;
pair duplicatedId =
    idmap.insert(pair(1, "my name")) ;

insert는 키 값이 중복된 경우 새로 삽입해야하는 키/값 쌍이나 이전에 삽입되어 있든 키/쌍을 중복 여부와 함께 반환합니다.

이는 컨테이너에 일반 값 형식의 객체가 아닌 new로 할당한 객체 포인터를 저장할 때 특히 더 중요한 내용입니다. insert 함수를 호출하기 이전에 중복 여부를 미리 검사하지도 않고, 심지어 map 클래스에 포인터를 저장하기 위해 스마트 포인터를 사용하지 않는다면 최소한 반환 값이라도 검사해서 삽입에 실패한 객체를 책임지고 처리하는 자세는 가지고 있어야 하겠습니다.

Comments are closed.

Website Built by WordPress.com.

Up ↑