분류 전체보기84 UNSEEN 대비 4. C++ 주요 컨테이너 (2) (map, unordered_map) 해당 글은 다음 UNSEEN 대비 4. C++ 주요 컨테이너 (1) (array, vector, list) (tistory.com)에서 다루지 않은 나머지 컨테이너를 다루는 글입니다. 5. 맵(map) 맵(std::map)은 키(Key)와 값(value)의 쌍들을 저장하는 이진탐색트리 기반의 컨테이너이다. 이때, 키는 중복될 수 없다. 맵의 각 원소는 std::pair로 저장된다. pair는 순서쌍을 가리키는데 여기서는 pair.first에 key가, pair.second에 value가 저장된다. C++에서 맵은 Key를 기준으로 자동 정렬되는데, 내부적으로는 레드블랙트리로 구현된다. 맵 생성 맵을 생성하는 대표적인 방법에는 map 로 빈 맵을 생성하거나 map(const map& x)로 기존 맵을 복사.. 2024. 1. 28. UNSEEN 대비 4. C++ 주요 컨테이너 (1) (array, vector, list) 1. C++의 주요 컨테이너 C++에서 컨테이너란 임의 타입의 객체를 보관할 수 있는 자료형을 말한다. 개발자는 필요하다면 트리, 그래프, 연결리스트 등 원하는 스펙으로 자료구조를 구현해야 한다. 하지만 C++에서는 표준 템플릿 라이브러리(STL, Standard Template Library)에서 다양한 컨테이너를 제공하고 있기 때문에 보통 STL 컨테이너로 빠르게 원하는 기능을 구현할 수 있다. C++의 표준 템플릿 라이브러리에는 array, vector, list, map, unordered_map 등의 컨테이너가 있다. 이번 글에서는 기본적인 컨테이너 중에 대해 개요와 동작 원리를 알아보자. 2. 배열(std::array) 정의 // 헤더파일 의 선언 template struct array; st.. 2024. 1. 28. UNSEEN 대비 3. 메모리 영역 해당 글은 UNSEEN 2기 코딩 테스트를 대비하여 정리 목적으로 적은 글입니다. 잘못된 부분이 있다면 지적해 주시면 감사하겠습니다. 3. 메모리 영역 메모리의 구조 프로그램이 실행되려면 먼저 프로그램을 메모리에 로드해야 한다. 프로그램 코드가 담고 있는 명령어와 프로그램 내에서 사용될 변수 등을 위해서 메모리가 필요하기 때문이다. 이때, 프로그램이 메모리에 탑재되어 실제로 실행되고 있는 것을 가리켜 프로세스라 부른다. 컴퓨터의 운영체제는 프로그램 실행을 위해 다양한 메모리 공간을 제공한다. 프로그램이 운영체제로부터 할당받는 메모리 공간은 대표적으로 4가지로 분류할 수 있다. 코드(code) 영역 메모리에 실행할 프로그램의 코드가 저장되는데 이를 메모리에서 코드 영역이라 부른다. 텍스트 영역이라고도 부른.. 2024. 1. 25. UNSEEN 대비 2. C++ 언어의 특징 - 해당 글은 UNSEEN 2기 코딩 테스트를 대비하여 정리 목적으로 적은 글입니다. 잘못된 부분이 있다면 지적해주시면 감사하겠습니다. 1. 설계 주요 목표 C언어와의 호환성: 기존 C언어 코드를 그대로 사용할 수 있도록 C언어의 문법을 그대로 가져온다. 객체지향: 소프트웨어를 재사용하여 생산성을 높이기 위해 객제지향 개념을 도입 타입 체크: 타입 체크를 엄격히 하여 실행 시간 오류의 가능성을 줄이고 디버깅을 도움 효율성 저하 최소화: 성능에 영향을 주지 않는 선에서 기능을 추가한다. 예를 들어 함수의 인라인을 통해 함수 호출로 인한 시간을 최소화한다. 2. C++의 특징 C에서 C++로 오면서 많은 특징이 추가되었다. 가장 대표적인 것은 객체지향 프로그래밍이 가능해진 점이고, 그 이외에도 bool 자료.. 2024. 1. 25. UNSEEN 대비 1. 객체지향 프로그래밍의 특징 - 해당 글은 UNSEEN 2기 코딩 테스트를 대비하여 정리 목적으로 적은 글입니다. 잘못된 부분이 있다면 지적해주시면 감사하겠습니다. 1. 객체지향 프로그래밍의 특징 객체지향 프로그래밍이란? 객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 객체들의 모임으로 파악하고자 하는 것을 말한다. 자동차를 만들 때 작은 부품을 먼저 만들고, 이렇게 만든 부품을 하듯이, 객체지향적으로 프로그램을 설계한다는 말의 의미는 객체를 만들고 이를 조립해서 하나의 거대한 프로그램을 만든다는 뜻이다. C언어 이후, 많은 객체지향 언어가 나타났는데 대표적인 것이 Objective-C, C++, Java, C#.. 2024. 1. 23. [DirectX 11 in Windows 10, 11] 3. DirectX 11의 초기화 해당 글도 래스터텍의 글과 빠재님의 번역본을 참고하여 작성되었습니다. 빠재의 노트 :: DirectX11 Tutorial 3 - DirectX 11의 초기화 (tistory.com) Tutorial 3: Initializing DirectX 11 (rastertek.com) 개념 정리 DX11 자체가 너무 알아야 할 개념이 많아서 그것부터 정리해 놓음. DX11 학습에 필요한 개념 정리 새로운 프레임워크 이제 모든 Direct3D 시스템 함수를 관리(handle)할 새로운 클래스를 추가해 보자. 이를 위해 D3DClass를 추가했다. ApplicationClass 하위에 위치시켰는데, ApplicationClass가 이전 튜토리얼에서 말했듯이 모든 그래픽과 관련된 클래스를 해당 클래스에 캡슐화시키는 클래.. 2023. 8. 9. DirectX 11 학습에 필요한 개념 정리 학습에 필요한 개념 Direct3D를 초기화할 때 부가 API가 출몰하기 시작한다. 근데 너무 많아서 뭐가 뭔지 모르겠다. 글 보고 공부해보자. DirectX를 짜려는데 기초 개념을 공부하고 싶다면 해당 글을 읽어보는 걸 추천한다(DirectX 11 기초 (Tutorial)-.. : 네이버블로그 (naver.com)) 기능 수준(Feature Level) [DirectX 12] 기본지식 - 기능 수준(Feature Level) (tistory.com) 기능 수준들은 GPU가 지원하는 기능들의 엄격한 집합을 정의한다(각 기능들이 지원하는 구체적인 내용은 SDK를 참고). 예를들어 기능 수준 11을 지원하는 GPU는 반드시 Direct3D 11의 기능 집합 전체를 지원해야 한다. 이러한 기능 수준은 응용 프.. 2023. 8. 9. [C/C++] 메모리 초기화하기: ZeroMemory 매크로 윈도우 프로그래밍에서 맨날 메모리를 0으로 초기화할 때 memset은 안 쓰고 ZeroMemory를 쓴다. ZeroMemory ZeroMemory는 매크로의 일종으로 정의는 다음과 같다. // minwinbase.h #define MoveMemory RtlMoveMemory #define CopyMemory RtlCopyMemory #define FillMemory RtlFillMemory #define ZeroMemory RtlZeroMemory // winnt.h #define RtlEqualMemory(Destination,Source,Length) (!memcmp((Destination),(Source),(Length))) #define RtlMoveMemory(Destination,Source,.. 2023. 8. 6. [DirectX 11 in Windows 10, 11] 2. 프레임워크와 윈도우 만들기 원문 빠재의 노트 :: DirectX11 Tutorial 2 - 프레임워크와 윈도우 만들기 (tistory.com) DirectX11 Tutorial 2 - 프레임워크와 윈도우 만들기 Tutorial 2: Creating a Framework and Window 원문: http://www.rastertek.com/dx11tut02.html 저는 우선 DirectX 11 코딩을 시작하기보다는 간단한 코드 프레임워크를 만들어 두는 것을 추천합니다. 이 프레임워크는 간단 blog.nullbus.net Tutorial 2: Creating a Framework and Window (rastertek.com) Tutorial 2: Creating a Framework and Window Tutorial 2: Cr.. 2023. 8. 3. 이전 1 2 3 4 5 6 7 8 ··· 10 다음