C++
C 언어와 C++ 의 차이
안녕하세요 피터입니다. 많은 분들이 C 언어를 배우고 나서 C++ 를 배우기 시작 할 때 어려움을 겪곤 합니다. 제 주변에도 그런 분들이 있어서 어떤 점 때문에 어려운지 물어봤더니 어디서부터 어떻게 시작해야 될 지 모르겠다는 답변이 가장 많았습니다. 어쩌면 당연한 일인지도 모르겠습니다. 비교적 간단한 문법 체계를 갖고 있는 C 언어와 달리 C++ 은 굉장히 다양한 패러다임이 녹아있으며 방대한 스케일을 자랑하는 언어이기 때문입니다. (물론 그렇다고 해서 C 언어가 가볍고 만만한 프로그래밍 언어라는 말은 아닙니다. 오히려 그 반대로 처음엔 쉬워보이지만 알면 알수록 어려워지는 언어입니다. C 언어는 역사가 긴 만큼 괴수 분들이 많이 서식하고 계십니다 :D) 그래서 우선은 C 언어와 C++ 두 언어가 어떤 부분..
GOTO 문에 대해서
GOTO문에 대해서는 다양한 의견이 있습니다. 간혹 개발자 커뮤니티 등의 사이트에서 GOTO문의 사용에 대해 격렬한 토론이 이루어지기도 합니다. GOTO문을 적절히 사용하면 아무런 문제가 없다는 사람들과 GOTO문 자체를 쓰는 것을 극도로 혐오하는 사람들 간의 논쟁은 마치 물과 기름을 보는 듯 타협의 여지가 없어 보일 때가 많습니다. 하지만 중요한 점은 GOTO문으로 인해 야기되는 문제들이 정확하게 어떤 문제들인지 파악하고 효율적으로 사용할 수 있는 방법은 없는지 여러분들이 직접 고민하고 생각해볼 필요가 있다는 점입니다. 즉, 여러분이 GOTO문을 사용할지 안할지를 결정하는데 있어서 단순히 ‘누군가가 쓰지 말라고 해서’ 라는 이유로 사용하지 않거나, ‘누가 뭐라고 하던 나는 편하니까 그냥 쓰자’ 라는 생..
[C++] map vs hash_map(unordered_map)
개요 hash_map은 비표준 Container인데 반해(stdext namespace에 포함) unordered_map은 C++11에서 STL 표준 Container로 추가되었으며, (사실 TR1부터 추가되었지만 C++11에서 좀 더 최적화가 이루어졌다고 합니다) hash_map과 거의 동일한 기능을 제공합니다. MSDN의 hash_map 페이지에서도 표준인 unordered_map 사용을 권장하고 있으므로 이후에는 unordered_map 기준으로 이야기하겠습니다. 일반적으로 데이터 양이 많은 경우 map 보다 unordered_map은 성능이 더 좋습니다. 알고리즘의 차이로 데이터가 N 개일 때 map 은 O(logN)의 탐색 속도를, unordered_map은 O(1)의 탐색 속도를 각각 갖기 때..