stack에 대한 공부를 하고 가자 https://wo-dbs.tistory.com/181 stack stack C++ 표준 라이브러리의 std::stack은 스택(stack)을 구현한 어댑터 컨테이너이다. 스택은 LIFO(Last In, First Out) 데이터 구조로, 가장 최근에 삽입된 요소가 가장 먼저 제거된다. std::stack은 기본적으 wo-dbs.tistory.com 이 문제는 stack을 상속받아서 stack을 직접 구현해보는 문제임. 기본 stack의 요소들은 stack을 상속 받아서 잘 사용할 수 있기는 함. 그런데 문제에서 요구하는 건 stack 컨테이너에 없는 반복자의 기능을 넣어서 보여달라고 하는 거임 원래는 stack에 반복자 기능이 없음. 반복자 기능을 넣으려는 게 중요 ..
42Seoul
들어가기 전 보고 가자! https://wo-dbs.tistory.com/179 vector max_element, min_element →vector 컨테이너에서 최대값, 최소값을 구할 경우 for문을 작성할 수도 있지만 이는 복잡하다. 그래서 algorithm 라이브러리에 있는 max_element를 사용한다면 한줄로도 간단하게 최대값을 구할 수 있 wo-dbs.tistory.com 이번 문제는 컨테이너의 라이브러리를 사용해보는 문제. 문제 조건대로 한 번 구현해보자. 최대 N개의 정수를 저장할 수 있는 Span 클래스를 개발합니다. N은 부호 없는 int 변수이며 생성자에 전달되는 유일한 매개 변수입니다. class Span{ private: std::vector vec; unsigned int N..
들어가기 전 보고 가자! STL,반복자 개념 https://wo-dbs.tistory.com/176 STL, 컨테이너, 반복자 개념 STL(Standard Template Library)이란? → 프로그램에 필요한 자료구조와 알고리즘을 Template로 제공하는 라이브러리 STL은 C++을 위한 라이브러리로 알고리즘, 컨테이너, 함수자, 반복자 4가지로 구성되어 wo-dbs.tistory.com 컨테이너 vector https://wo-dbs.tistory.com/177 vector vector 기본 사용법 → std::vector는 가변 크기의 배열을 나타내는 C++ 표준 라이브러리 컨테이너이다. 이는 배열과 유사하지만 크기를 동적으로 조정할 수 있는 장점을 가지고 있습니다. 아래는 std:: wo-d..
이번에는 클래스 템플릿 Array를 구현하는 문제 차근차근 조건대로 해보자. 매개변수가 없는 구성: 빈 배열을 생성합니다. unsigned int n을 매개변수로 사용하여 생성: 기본적으로 초기화된 n개 요소의 배열을 생성합니다. 팁: int * a = new int(); 그런 다음 *a를 표시합니다. private: T *arr; unsigned int _len; 복사 및 할당 연산자에 의한 구성. 두 경우 모두 복사 후 원본 어레이나 복사본을 수정해도 다른 어레이에 영향을 주어서는 안 됩니다. Array(const Array &array) { this->arr = NULL; *this = array; } Array &operator=(const Array &array) { if (this == &ar..
Iter이라는 함수가 있는데 이 함수의 조건을 말해줌. 아무것도 반환하지 않는 함수 템플릿 iter 첫 번째 매개변수는 배열의 주소입니다. 두 번째는 배열의 길이입니다. 세 번째는 배열의 모든 요소에 대해 호출되는 함수입니다. iter.hpp #ifndef WHATEVER_HPP # define WHATEVER_HPP #include template void iter(T *array, int len, void (*func)(T &)) { if (len
들어가기 전 공부하고 가자! https://wo-dbs.tistory.com/172 C++ template(템플릿) → 템플릿은 함수나 클래스를 개별적으로 다시 작성하지 않아도, 여러 자료 형으로 사용할 수 있도록 하게 만들어 놓은 것. 함수 템플릿(Function Template), 클래스 템플릿(Class Template)로 나뉜다. 좀 wo-dbs.tistory.com 이번 문제는 템플릿을 한 번 사용해보라는 문제이다. swap, min, max의 값을 구하는 템플릿 함수를 작성하면 된다. #ifndef WHATEVER_HPP # define WHATEVER_HPP template void swap(T &a, T &b) { T tmp = a; a = b; b = tmp; } template T mi..
들어가기 전 dynamic_cast를 공부하고 가자 https://wo-dbs.tistory.com/168 dynamic_cast dynamic_cast는 주로 다형성(polymorphism)과 관련이 있다. 이 연산자는 런타임에 안전한 형변환을 수행한다. 즉, 동적으로 객체의 타입을 확인하고, 그 결과에 따라 적절한 형변환을 수행한다. 주로 상 wo-dbs.tistory.com ex02에서는 업캐스팅을 하는 문제이다. Base 클래스 A, B, C가 상속을 받으며 업캐스팅을 한다. #include "Base.hpp" #include "A.hpp" #include "B.hpp" #include "C.hpp" #include #include #include static Base* generate() { s..
들어가기 전 보고 가자 https://wo-dbs.tistory.com/167 reinterpret_cast reinterpret_cast()는 static_cast()보다 안전성은 조금 떨어지며, C++에서 가장 강력하면서도 위험한 형변환 중 하나이다. C++ 타입 규칙에서 허용하지 않더라도 상황에 따라 캐스팅하는 것이 적합할 때 wo-dbs.tistory.com ex01은 reinterpret_cast에 대해서 잘 알고 있는 지 확인해보는 문제이다. 개념을 잘 알면 문제가 잘 풀릴 것이다. prev를 선언하여 next에 넣어준 후 prev랑 next를 연결시켜주는 문제. #include "Data.hpp" uintptr_t serialize(Data* ptr) { return(reinterpret_c..
들어가기 전 공부하고 가자 리터널, 상수 https://wo-dbs.tistory.com/164 리터널, 상수 이번에는 프로그래밍 언어에서 리터널, 상수라는 이야기가 나오게 되는데 이걸 공부해보자. 리터널 리터널(literal)은 프로그래밍 언어에서 고정된 값을 나타내는 표현 방식 코드 상에서 직접 사 wo-dbs.tistory.com inff, inf, nan, NAN https://wo-dbs.tistory.com/165 inff, inf, nan, NAN inff, inf inff, inf는 양의 무한대를 나타내는 부동 소수점 리터널 상수이다. double, float에서 사용하는 상수가 나뉘어지는데 밑 표를 보고 이히해보자. double float 양의 무한대 부동 소수점 리터널 상 wo-dbs...
forms을 작성하는 거는 귀찮아서 interns이 존재한다고 한다. 인턴에게는 이름도 없고, 등급도 없고, 독특한 특성도 없습니다. 관료들이 관심을 갖는 유일한 것은 그들이 일을 하는 것입니다. → 멤버 변수가 없다라는 것임. 그렇지만 중요한 makeForm 함수가 존재. AForm *makeForm(const std::string &form, const std::string &target); 이 함수 안에는 if/elseif/else 금지 → 함수 포인터 사용. "Bender"를 대상으로 하는 RobotomyRequestForm을 생성. intern hpp #ifndef INTERN_HPP # define INTERN_HPP #include "AForm.hpp" #include "Presidentia..