C++ 33

[C++] STL 정리 ( pair, vector, stack, queue, deque, map, set, algorithm )

STL(Standard Template Library) 는 C++ 에서 가장 자주 사용되는 라이브러리 중 하나입니다. PS (Problem Solving)을 공부하기 전에 필수적으로 익혀야 하는 라이브러리입니다. 문제를 푸는데 필요한 알고리즘들을 빠르게 구현할 수 있기 때문입니다. 자료구조에서 배우는 스택, 큐, 트리, 등등을 일일히 구현하고 문제를 푸는 것도 중요하지만 매번 그럴 수가 없기 때문에 STL을 활용해서 문제를 해결하는 것도 중요한 것이죠. STL은 크게 4가지 ( container, iterator, algorithm, functor ) 로 나뉩니다. PS에서 중점적으로 볼 부분은 자료구조라고 할 수 있는 컨테이너(container) 와 각 컨테이너를 다룰 수 있는 여러 함수들이 구현되어 ..

[C++] 템플릿 ( Template ) - 함수 템플릿 / 클래스 템플릿

C++ 이 가지는 특징 중 하나로 일반화 프로그래밍(Generic programming) 을 들 수 있습니다. 일반화 프로그래밍이란 쉽게 말하자면 일반적인, 다양한 상황에서도 같은 코드로 적용할 수 있는 것을 말합니다. C++ 에서 일반화 프로그래밍을 할 수 있는 대표적인 기능 중 하나가 바로 템플릿(Template) 입니다. 말로는 무슨 소리인지 이해가 잘 안가죠. 간단한 예를 들어보겠습니다. #include #include int max(int a, int b) { if (a > b) return (a); else return(b); } float max(float a, float b) { if (a > b) return (a); else return(b); } int main(void) { int ..

C++/C++ 기초 2023.05.05

[C++] 생성자와 소멸자 ( Constructor and Destructor )

포스팅의 목차 / 링크 1. 생성자 (Constructor) 2. 디폴트 생성자 (Default Constructr) 3. 복사 생성자 (Copy Constructor) 4. 소멸자 (Destructor) 5. 생성자/소멸자 실행 순서 클래스를 통해 객체를 생성하면, 해당 객체는 그 즉시 메모리에 생성됩니다. 그러나 이 객체는 모든 멤버 변수를 초기화 하기 전에는 사용할 수 없습니다. 객체의 멤버 변수는 사용자나 프로그램이 일반적인 초기화 방식으로 초기화 할 수 없는데요, 그 이유는 객체의 멤버 중 private 멤버가 있는 경우 이런 멤버에 직접 접근할 수 없기 때문입니다. 따라서 private 멤버에 접근할 수 있는 초기화 만을 위한 public 함수가 필요한데, 이런 초기화 함수는 객체가 생성된 후..

C++/C++ 기초 2023.05.05

[C++] 클래스 ( Class )

클래스란 C++ 에서 지원하는 문법으로, 구조체의 상위 호환으로 생각할 수 있습니다. 구조체는 서로 다른 타입의 변수들을 묶어서 하나의 자료형으로 정의할 수 있었습니다. 클래스는 멤버로 함수를 포함할 수 있기 때문에 C 언어의 구조체보다 더 확장된 의미를 가집니다. 클래스의 멤버 변수를 property, 멤버 함수를 메소드(method) 라고 합니다. C++ 에서는 이러한 클래스를 가지고 객체 지향 프로그램을 작성할 수 있습니다. 객체 지향 프로그래밍(OOP, Object-Oriented Programming) C++ 은 객체 지향 프로그래밍 언어다. 이런 말을 모두 들어보고 C++ 공부를 시작하셨겠죠? 객체 지향 프로그래밍에서는 모든 데이터를 객체(object)로 취급하며, 객체가 프로그래밍의 중심이 ..

C++/C++ 기초 2023.05.04

[C++] 함수 오버로딩 ( Function overloading )

함수 오버로딩(Function overloading)은 같은 이름의 함수를 중복하여 정의하는 것을 말합니다. 이러한 것을 굳이 왜 사용하느냐, C++ 에서 새로 추가된 함수 오버로딩은 여러 함수를 하나의 이름으로 연결해줍니다. 즉, 함수 오버로딩이란 같은 일을 처리하는 함수를 매개변수의 형식을 조금씩 달리하여 하나의 이름으로 작성할 수 있도록 해주는 것입니다. 이런 함수 오버로딩은 객체 지향 프로그래밍의 특성 중 다형성(polymorphism)의 구현입니다. 함수 시그니처(Function signature) 함수 시그니처란, 함수의 원형에 명시되는 매개변수 리스트 를 뜻합니다. 함수 오버로딩의 핵심이라고도 할 수 있습니다. 만약 두 함수가 매개변수의 개수와 그 타입이 모두 같다면, 이 두 함수의 시그니처..

C++/C++ 기초 2023.05.04

[C++] String 클래스 / 메소드

문자열(string) 이란 메모리에 저장된 일련의 연속된 문자들의 집합을 의미합니다. C++ 에서는 2가지 방법으로 문자열을 생성할 수 있습니다. 1. C와 동일한 방식 (배열) 2. string 클래스를 이용한 문자열 먼저 C와 동일한 방식으로 문자열을 간단히 만들어보고, 왜 string 클래스를 써야 하는가에 대해 알아봅시다. C와 동일한 방법으로 C++에서는 문자열을 입력받기 위해 문자열이 저장될 문자형 배열을 미리 선언해야 합니다. #include using namespace std; // std라는 name space에 속한 정의들은 이름 안붙이고 사용 가능 int main() { const int SIZE = 10; char name[SIZE]; char address[SIZE]; cout >..

C++/C++ 기초 2023.05.04

[C++] 메모리의 동적할당 ( Dynamic allocation )

https://blog.naver.com/songsite123/223044574844 동적 메모리 할당(Dynamic Memory Allocation) 및 해제 동적 메모리 할당을 알아보기에 앞서 정적 메모리 할당의 한계점을 하나 짚고 넘어가겠습니다. 앞선 포스팅... blog.naver.com 위 포스팅에서 C 언어를 통해 메모리의 동적할당 법에 대해 배워봤습니다. C는 malloc() 함수나 realloc(), calloc() 함수 등을 이용해 메모리 동적할당을 하고, free() 함수를 통해 메모리 공간을 해제합니다. 그러나 C++ 에서는 조금 다른 new 연산자와 delete 연산자를 통해 동적할당을 진행합니다. 간단히 동적할당이란 무엇인가에 대해 복습해보고, new 연산자와 delete 연산자를..

C++/C++ 기초 2023.05.04

[C++] 배열, 구조체, 포인터 [Array, Structure, Pointer]

C++ 에서의 배열, 구조체, 포인터는 C와 하나도 다르지 않고 완전히 동일합니다. https://blog.naver.com/songsite123/223057180883 배열, 구조체, 포인터 [Array, Structure, Pointer] C 프로그래밍에서 아주 많이 다뤘지만 그럼에도 매우 중요하고 자료구조 책에도 한 챕터로 나와있기에 전... blog.naver.com 위 포스팅은 제가 이전에 C 문법에 대해 공부한 내용을 네이버 블로그에 올렸는데 그를 총 정리한 포스팅입니다. 위처럼 설명에 덧붙여 순서대로 여러 포스팅을 정리해놓았으니 링크를 타고 가셔서 참조하시면 배열, 구조체, 포인터 등에 대해서 10개가 넘는 포스팅으로 자세히 확인할 수 있습니다. 감사합니다.

C++/C++ 기초 2023.05.04
728x90