Make Unreal REAL.
article thumbnail

 

전에 알고리즘 스터디를 할 때 map의 키 존재 여부를 0으로 확인하는 것이 안전한지, 컴파일러에 따라 다른 것은 아닌지에 대해 의논했던 적이 있다.

 

 

map<int,int> default values

std::map<int,int> mapy; ++mapy[5]; Is it safe to assume that mapy[5] will always be 1? I mean, will mapy[5] always get the default value of 0 before '++', even if not explicitly declared, as...

stackoverflow.com

위 쓰레드에 따르면 map의 [] 연산자는 키가 존재하지 않을 경우 value_type(std::move(x), T())을 통해 값을 삽입한다.

 

T()는 void를 제외한 모든 타입에 대해 값 초기화를 진행하는데, 이때 기본(Primitive) 자료형에 대한 값 초기화는 항상 0임을 보장한다.

 

그러므로, map에서 map.find()나 map.count()를 통해 키 존재 여부를 확인할 필요 없이 단순히 값이 0이나 NULL인지 확인하는 것은 안전하다고 한다.

 

(단, 0이나 NULL을 의도적으로 삽입하는 경우에는 주의해야 한다.)

profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그