C++ 17 구조적 바인딩 1. 개요 오늘은 C++의 구조적 바인딩에 대해 알아보겠습니다. 2. 구조적 바인딩? 구조적 바인딩은 C++ 17에 지원하는 기능으로 어떤 배열, STL 같은 컨테이너에서 멤버들을 쉽게 바인딩할 수 있도록 도와주는 문법이다. 아래의 예시를 보겠습니다. #include #include #include #include using namespace std; int main() { map m; for (int i = 1; i 개발자 면접 공부/C-C++ 2023.09.14
C++ 11 tuple 1. 개요 오늘은 C++의 tuple에 대해서 공부하겠습니다. 2. tuple? tuple은 C++11에 나온 타입중 하나 입니다. tuple(튜플)은 서로 다른 타입 즉 int double boolean등 두개 이상의 타입을 하나의 변수의 묶을수있는 기능을 가지고 있습니다. 보통 pair 키워드는 두 개만 저장할수있는 반면 tuple은 두 개 이상 저장이 가능합니다. 아래의 예시를 보겠습니다. #include #include #include using namespace std; int main() { tuple tu; tu = make_tuple(5, 5, false); cout 개발자 면접 공부/C-C++ 2023.09.13
C++ 17 any 1. 개요 오늘은 C++ 17버전에서 새로 나온 any에 대해서 알아보겠습니다. 2. any? any는 타입으로 any 앞에 오는 변수는 어떠한 값이라도 저장할 수 있는 타입입니다. 예시를 보겠습니다. #include #include using namespace std; int main() { any a = 123; cout 카테고리 없음 2023.09.11
함수에 const 위치에 따른 결과 1. 개요 오늘은 함수에 const가 앞 뒤 매개변수일때 어떤 결과가 나오는지 알아봅시다. 2. 반환값 const 먼저 반환값 const에 대해서 알아보도록 하겠습니다. 보통 함수를 정의를 할 경우 void int double 등 여러가지의 반환 타입으로 정의합니다. 하지만 앞에 const가 붙은 함수일 경우에는 어떻게 될가요? const int sum(int a, int b) { return a + b; } 이런 형식을 가지고 있습니다. 그냥 간단합니다 반환을 상수로 반환하겠다 라는 뜻 입니다. 보통은 잘 안쓰지만 이런 경우에는 쓸수도 있습니다. const int& sum(int a, int b) { return a + b; } 이런 경우에는 참조값으로 반환이기 때문에 const를 붙여줘야합니다. 안그.. 개발자 면접 공부/C-C++ 2023.09.09
가변길이 템플릿 1. 개요 오늘은 C++의 가변길이 템플릿 (매개변수 팩) 에 대해서 공부하도록 하겠습니다. 2. 가변길이 템플릿(매개변수 팩)? 가변길이 템플릿(Variabic template)은 여러개의 인자를 가질 수 있습니다. 예를 들어 가변 길이 템플릿을 이용하여 정의한 함수 템플릿은 정해준 숫자가 아닌 가변 길이 인자를 받을 수 있습니다. 아래 코드에서 typename 뒤에 선언된 "..."이 템플릿 파라미터 팩(parameter pack)이라고 불립니다. 이 템플릿 파라미터 팩을 선언하면 이 템플릿은 0개 이상의 (가변된 길이의) 인자를 받을 수 있다는 뜻 입니다. 2. Sample Code 아래 소스 코드는 가변 길이 템플릿을 이용하여 여러 개의 인자를 전달받아 화면에 출력하는 예시입니다. 화면에 출력하기.. 개발자 면접 공부/C-C++ 2023.09.04
구조체, 클래스 패딩 바이트 1. 개요 오늘은 C++의 구조체, 클래스 패딩 바이트에 대해 공부하겠습니다. 2. 크기 구조체와 클래스의 크기는 어떻게 결정이 될가요? 구조체나 클래스는 안에 선언되있는 변수에 따라 결정이 된다고 생각을 하고 있을겁니다. 하지만 실제로 크기를 살펴보면 매우 다르다는것을 알수있습니다. 대부분 내부에 선언되는것보다 매우 많은 크기를 차지하는데요 그것은 패딩 바이트 때문에 그렇습니다. 패딩 바이트란 클래스나 구조체에 패딩 바이트를 추가하여 CPU 접근을 더 용이하게 해 주는 것을 말합니다(정확히 말하면 레지스터의 fetch). 자칫 공간 낭비일 수도 있는 불필요한 패딩 공간을 확보하면서 메모리의 크기를 맞추는 이유는 캐시 hit율을 높이고 CPU의 연산 횟수를 줄이기 위함입니다. 3. 패딩 규칙 패딩 규칙에.. 개발자 면접 공부/C-C++ 2023.08.28
C++11,14 람다식 1. 개요오늘은 람다식에 대해 공부하도록 하겠습니다.2. 람다람다식은 C++11,14에 추가된 표현법으로 보통 익명 함수라고 불립니다. 람다를 저는 학부생때 Java시간때 처음 알게 되었습니다. 그때는 그냥 함수가 간편하게 사용되는 구조인것만으로 끝을 냈습니다. 하지만 이러한 이유때문에 람다를 사용하는경우가 있습니다. 1. 함수 객체와는 다르게 class를 선언할 필요가 없다. (코드의 길이가 줄어듬) 2. 함수 포인터의 단점은 "함수의 인라인화가 불가능합니다" 여기서 인라인은 컴파일러가 함수를 굳이 스택에 쌓아서 부를필요없이 메인함수에서 그 함수만 가지고와 실행하는 기법입니다. 하지만 람다는 "함수의 인라인"이 가능합니다.3. 람다 표현식보통 람다표현식은 다음과 같습니다. #include using n.. 개발자 면접 공부/C-C++ 2023.06.14
라이브러리 vs 프레임워크 오늘은 라이브러리와 프레임워크에 차이점에 대해 알아보도록 하겠습니다. 1. 개요 라이브러리랑 프레임워크 얼핏 프로그래머 사이에서 들으면 매우 비슷해 보이는 단어입니다. 저 또한, 비슷해 보이는 단어로 알고있었습니다. 하지만 이 또한, 엄연히 다른 단어입니다. 한개씩 알아보도록 하겠습니다. 2. 라이브러리(Library) 라이브러리란 위키백과에서는 라이브러리는 주로 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다. 여기에서 구성 데이터, 문서, 도움말, 메시지 틀, 미리 작성된 코드, 함수, 클래스, 값, 자료형 사양 등을 포함할 수 있다. 라고 설명이 되있습니다. 라이브러리는 쉽개 말해서 개발에 필요한 것들을 미리 구현해놓은 도구라고 할 수있습니다. 재사용이 가능한 기능을 미리.. 개발자 면접 공부/운영체제,CS 2023.05.21
상수와 리터럴 (Constant & Literal) 오늘은 상수(Constant) 와 리터럴(Literal)에 대해서 알아보도록 하겠습니다. 1. 개요 C++ 에서는 const 라는 상수를 지정할수있는 선언문이 있습니다. 이 const 라는 키워드를 붙힌 변수는 반드시 선언 당시에 초기화를 진행시켜줘야하고 그 다음에 절대로 값이 변하지가 않습니다. 그럼 리터럴은 무엇일가요?? 아래 내용을 정리하면서 설명을 해 드리겠습니다. 2. 상수 (Constant) 상수는 말 그대로 수식에서 변하지 않는 값을 의미합니다. 값이 변하는 변수와의 반대에 의미를 가지고있습니다. const int a = 5; // 반드시 초기화를 진행해줘야한다. a = 6 // 에러 Type이 const int type입니다. 예시로 const 를 넣으면 반드시 초기화를 진행시켜줘야하며 a.. 개발자 면접 공부/C-C++ 2023.05.20
정렬 알고리즘(퀵, 병합) 오늘은 정렬 알고리즘 중에 퀵, 병합 정렬에 대해 알아보도록 하겠습니다. 1. 개요 저번 포스팅에서는 버블, 삽입, 선택 정렬에 대해 알아보았다면 요번에는 퀵, 병합, 힙 정렬에 대해 알아봅시다. 버블, 삽입, 선택은 시간 복잡도가 그렇게 좋진않았지만 단순한 알고리즘이였습니다. 그에 반대로 퀵, 병합, 힙은 시간복잡도가 좋지만 복잡한 알고리즘입니다. 2. 퀵 정렬(Bubble Sort) 퀵 정렬은 분할 정복 방법을 통해 주어진 배열을 정렬하는 방식입니다. 여기서 분할 정복 이란? 분할 정복 : 문제를 작은 2개의 문제로 분리하고 각각을 해결한 다음, 결과를 모아서 원래의 문제를 해결하는 전략 입니다. 퀵 정렬은 불안정 정렬에 속하며, 다른 원소와의 비교만으로 정렬을 수행하는 비교 정렬에 속한다. 또한, .. 개발자 면접 공부/C-C++ 2023.05.14