언어

[기술 질문] #6_동적 할당 C++의 동적 할당에 대해 알아보겠습니다. Overview 개념 malloc, free new, delete virtualalloc, virtualfree #1 개념 [Basic C++] #57_동적 메모리 [Basic C++] #57_동적 메모리 C++의 "동적 메모리"에 대해 알아보겠습니다. "전문가를 위한 C"의 22 항목, "효과적인 메모리 관리"에 해당하는 내용입니다. 동적 메모리 1. 메모리 구조 1. 코드 영역 : 컴 webddevys.tistory.com [Basic C++] #3 객체의 동적 할당, 얕은 복제, 깊은 복제 [Basic C++] #3 객체의 동적 할당, 얕은 복제, 깊은 복제 C++ 개발 중 객체 생성, 복제, 그리고 대입 과정에서 발생하는, ..
[기술 질문] #5_struct, 구조체 C++의 구조체에 대해 알아보겠습니다. Overview 개념 배열과 구조체 공용체 패딩 #1 개념 1. 구조체? struct MyStruct { int IntVal; float FloatVal; long LongVal; string Str; }; 구조체는 논리적으로 관련이 있는 항목들을 하나의 자료형으로 묶기 위해 사용됩니다. 객체의 데이터 멤버처럼, 구조체의 각 멤버들은 "."를 통해 접근이 가능하며, 포인터를 활용할 수도 있습니다. 2. 주의할 점? 구조체 변수 사이에 비교 연산자를 사용할 수 없습니다. 구조체 자신의 멤버로 구조체 자신을 사용할 수 없습니다. 구조체 선언에서 멤버 변수를 초기화할 수 없습니다. 3. 코드 #include using namesp..
[기술 질문] #4_#define, 매크로 C++의 "#define" 키워드에 대해 알아보겠습니다. Overview 개념 코드 개념 1. #define #define PI 3.14 Details #define으로 정의된 기호 상수 등은 전처리기가 확장 문자열로 변환합니다. #(전처리 지시자) + define(정의하다) 주의할 점은 ";"을 붙이면 함께 치환되어 문제가 발생할 수 있습니다. 숫자 상수로 대체된 소스코드는 컴파일 에러 발생 시 찾기 어렵습니다. 유지보수에 문제가 발생합니다! 결과적으로, #define 보다 const를 활용하는 것이 더 효율적입니다. 2. 매크로 함수 #define Add(a,b) (a + b) #define PLUS(a,b) a+b Details 일반 함수 호출은 함수가 위..
[기술 질문] #3_const 키워드 C++의 "const" 키워드에 대해 알아보겠습니다. Overview const 변수 const 데이터 멤버 const 멤버 함수 const 변수 1. const 변수 const float SomeFloat = 3.5; const std::string SomeStr = "Hello World"; Details const 키워드는 절대 변하지 않는 상수 값을 정의하기 위해 이용합니다. const 키워드는 선언문의 가장 앞에 붙여 활용합니다. 정리하자면, const 키워드로 선언된 변수는 컴파일러에 의해 그 값이 바뀌지 않도록 보증됩니다. 예외적으로, const_cast를 통해 상수성 제거가 가능한 경우도 있습니다. 2. const 포인터 // #1 첫 번째 목적 : 포..
[기술 질문] #2_auto 키워드, extern 키워드 C++의 "auto" 키워드와 "extern" 키워드에 대해 알아보겠습니다. Overview 개념 코드 개념 1. auto 키워드(자동 타입 추론) C++11부터 제공하는 auto 키워드는 변수의 유형을 컴파일러가 자동으로 추론하도록 하는 기능을 제공합니다. 지역 변수와 동일하게 함수 블록 내부에서 선언되며, 블록의 종료와 함께 소멸됩니다. 메모리 구조의 "스택"에 메모리 할당을 받습니다. 2. extern 키워드(외부 변수) 전역 변수와 동일하게 함수 블럭 밖에서 선언되며, 프로그램의 종료와 함께 소멸됩니다. 메모리 구조의 "정적 데이터(Data) 영역"에 메모리 할당을 받습니다. 외부 파일에서 선언한 전역 변수를 참조할 때 사용됩니다. 주의할 ..
[기술 질문] #1_변수 종류 C++의 "변수"에 대해 알아보겠습니다. Overview 메모리 구조 변수 종류 지역-Stack, 동적-Heap 함수 인자를 통해 함수로 값을 넘겨주는 방식 메모리 구조 1. 메모리 구조 [Basic C++] #57_동적 메모리 [Basic C++] #57_동적 메모리 C++의 "동적 메모리"에 대해 알아보겠습니다. "전문가를 위한 C"의 22 항목, "효과적인 메모리 관리"에 해당하는 내용입니다. 동적 메모리 1. 메모리 구조 1. 코드 영역 : 컴 webddevys.tistory.com Details 코드 영역 : 컴파일된 프로그램이 저장되는 영역 데이터 영역 : Global 변수 + Static 변수가 저장되는 영역 힙 영역 : 동적 할당된 변수를 저장하는 영역 (런타..
[자료구조]#2_이중 연결 리스트(Double Linked List) 선형 자료 구조 중 "이중 연결 리스트"에 대해 알아보겠습니다. Overview 이중 연결 리스트 삽입, 제거 알고리즘 이중 연결 리스트 1. 개념 typedef struct Node[ Data data; Node* prevLink; Node* nextLink; } Node; 연결 리스트의 노드는 "데이터 필드" + "다음 노드를 가리키는 링크(포인터)"로 이루어져 있습니다. 이중 연결 리스트는 다음 노드뿐만 아니라, 이전 노드를 가리키는 링크 또한 가집니다. 보통의 연결 리스트가 갖는 "단방향 탐색"에 대한 단점을 보완하기 위함입니다. 삽입, 제거 알고리즘 1. 삽입 알고리즘 1. 비어있는 연결리스트에 새로운 노드 삽입 #1 head..
[자료구조]#2_원형 연결 리스트(Circular Linked List) 선형 자료 구조 중 "원형 연결 리스트"에 대해 알아보겠습니다. Overview 원형 연결 리스트 삽입, 제거 알고리즘 원형 연결 리스트 1. 원형 연결 리스트 원형 연결 리스트는 연결 리스트의 마지막 노드가 "nullptr" 가리키지 않고, 연결 리스트의 첫 번째 노드를 가리키는 자료구조입니다. 삽입, 삭제 알고리즘 1. 삽입 #include #include using namespace std; typedef struct _Node { string Name; struct _Node* Next; }Node; int main() { Node* Head; Node* Node_1 = new Node(); Node_1->Name = "Fi..
[자료구조]#1_연결 리스트(Linked List) 선형 자료 구조 중 "연결 리스트"에 대해 알아보겠습니다. Overview 연결 리스트? 삽입, 제거 알고리즘 탐색 알고리즘 연결 리스트 1. 개념 연결 리스트는 노드 기반의 선형 자료구조로, 각 노드는 데이터 필드와 다음 노드를 가리키는 포인터로 구성되어 있습니다. 각 항목/노드의 논리적 저장 순서는 물리 저장 순서와 일치하지 않습니다. 2. 특징 각 항목은 "데이터 필드" + "포인터"를 갖는 노드 형식으로, 다음 노드를 가리키는 "포인터"를 갖습니다. 접근 방법은 첫 노드부터 포인터를 타고 순차적으로 접근하며, O(n)의 수행 속도를 가집니다. 삽입, 삭제 방법은 "포인터" 연결을 끊고, 연결하는 방식으로 매우 간단합니다. 크기는 고정되어 있지 않..
[Basic C++] #29_Set, STL 컨테이너 C++ 개발에서 STL 컨테이너에 대해 알아보겠습니다. C++가 제공하는 STL 컨테이너 중 Set과 MultiSet을 살펴보겠습니다. #0. 개념 1. 개념 Set은 STL에서 제공하는 연관 컨테이너입니다. 여느 연관 컨테이너가 그러하듯 노드 기반 컨테이너이며, 균현 이진트리로 구현되어 있습니다. Set은 "Key" 값을 원소로 이루어진 집합입니다. "Key" 값은 중복이 허용되지 않으며, 자동으로 정렬됩니다. 기본 정렬 방식은 오름차순(a Root -> Right)를 통해 정렬된 Key 값들을 순차적으로 탐색합니다. map 컨테이너와 달리, Set에서 "Key"값은 Key 값임과 동시에 ..
Hardii2
'언어' 카테고리의 글 목록 (4 Page)