프로그래밍

    쉽게 풀어보는 프로그래밍 주요 개념잡기

    쉽게 풀어보는 프로그래밍 주요 개념잡기

    안녕하세요? 피터입니다. 오늘은 프로그래밍 세계에서 흔하게 사용되는 주요 용어들에 대한 개념을 쉽게 풀어보겠습니다. 흔히 컴퓨터는 0과 1밖에 모른다고 말하는 것을 들어봤을 겁니다. 이게 무슨 말일까요? 예를 들어서 설명해보겠습니다. 한국이라는 나라에서는 사람과 사람이 의사소통하는데 있어서 한국어라는 언어를 사용합니다. 한국어는 자음과 모음이 결합된 한글로 이루어져 있습니다. 컴퓨터의 세계에서는 사람과 기계가 의사소통하는데 있어서 기계어(machine language)라는 언어를 사용합니다. 기계어는 0과 1로 조합된 명령어(instruction)로 이루어져 있습니다. 한국인과 의사소통을 하려면 한국어를 알아야 합니다. 그렇다면 컴퓨터와 의사소통을 하려면 기계어를 알아야 할까요? 아주 오래 전에는 그랬었..

    [C++] map vs hash_map(unordered_map)

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