프로그래밍/C++

    C 언어와 C++ 의 차이

    안녕하세요 피터입니다. 많은 분들이 C 언어를 배우고 나서 C++ 를 배우기 시작 할 때 어려움을 겪곤 합니다. 제 주변에도 그런 분들이 있어서 어떤 점 때문에 어려운지 물어봤더니 어디서부터 어떻게 시작해야 될 지 모르겠다는 답변이 가장 많았습니다. 어쩌면 당연한 일인지도 모르겠습니다. 비교적 간단한 문법 체계를 갖고 있는 C 언어와 달리 C++ 은 굉장히 다양한 패러다임이 녹아있으며 방대한 스케일을 자랑하는 언어이기 때문입니다. (물론 그렇다고 해서 C 언어가 가볍고 만만한 프로그래밍 언어라는 말은 아닙니다. 오히려 그 반대로 처음엔 쉬워보이지만 알면 알수록 어려워지는 언어입니다. C 언어는 역사가 긴 만큼 괴수 분들이 많이 서식하고 계십니다 :D) 그래서 우선은 C 언어와 C++ 두 언어가 어떤 부분..

    [C++] 포인터(Pointer)와 레퍼런스(Reference : 참조자)의 차이

    안녕하세요 피터입니다. 오늘은 C언어를 배운 후 C++을 공부하는데 있어서 굉장히 헷갈리는 개념인 포인터와 레퍼런스의 차이에 대해서 설명드리겠습니다. 개요 C++ 프로그래밍을 시작하면 레퍼런스(Reference : 참조자)라는 새로운 개념을 접하게 됩니다. 언뜻 보면 C언어를 공부할 때 여러분들을 굉장히 괴롭혔던 포인터(Pointer)와 유사해 보이는데 어떠한 대상을 가리킨다는 점에서는 같습니다. 하지만 포인터와 레퍼런스는 여러가지 차이점이 있습니다. 그 중에 여러분이 C++ 프로그래밍을 할 때 반드시 알아야 할 두 가지 중요한 차이점을 짚어드리겠습니다. 1. NULL 허용 여부 우선 NULL값을 허용하는 가에 대한 문제입니다. 포인터는 아시다시피 NULL을 허용하지만 레퍼런스는 NULL이 허용되지 않습..

    [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)의 탐색 속도를 각각 갖기 때..