반응형

c++ 21

[C++ 강좌 해답] 3-2. 조건문 정답 공개 및 해설

[카루의 C++ 강좌] 3-2. 조건문과 if ~ else if ~ else 오늘은 조건문을 배워보겠습니다. 예전에 배웠던 삼항 조건 연산자 기억하시나요? 그 연산자가 블록이 되었다고 보시면 쉽습니다. (조건식) ? (참일 때 실행할 식) : (거짓일 때 실행할 식); 자세 karupro.tistory.com 3-2 강좌의 도전 과제 해답을 설명합니다. 1. 두 수를 입력받고, 더 큰 수를 출력하는 프로그램을 작성하세요. // 모범 답안 (전체 코드) #include int main() { double num1, num2; std::cout > num1 >> num2; if (num1 > num2) std::cout darr[1]) std::cout > n; }); std::sort(std::begin(..

[C++ 강좌 해답] 3-1. 반복문 정답 공개 및 해설

[카루의 C++ 강좌] 3-1. 반복문과 for, while, do~while 드디어 재미있는 시간이 왔습니다. 이제 본격적으로 배열과 논리 연산자를 사용해 볼 겁니다. 반복문은 특정 구문을 여러 번 실행하기 위해서 사용합니다. 예를 들어 1부터 10까지 출력하는 프로 karupro.tistory.com 3-1 강좌의 도전 과제 해답을 설명합니다. 1. for문과 while문을 각각 사용해서 다음 결과를 출력하세요. 10 8 6 4 2 10부터 시작해서 2씩 줄여나가며 2까지 출력하는 코드입니다. // 모범 답안 (전체 코드) #include int main() { for (int i{10}; i > 0; i -= 2) std::cout

[C++ 강좌 해답] 2-3. 연산자 II 정답 공개 및 해설

[카루의 C++ 강좌] 2-3. 연산자 II, 연산자 우선순위 저번 시간에 배운 연산자는 복습하셨나요? 이제 더 난이도를 올려보겠습니다. 비트 연산자 우리는 10진법을 기본으로 사용하지만, 컴퓨터는 이진법이 기본인 거 아시죠? 0과 1을 사용하죠. _ _ _ _ karupro.tistory.com 2-3 강좌의 도전 과제 해답을 설명합니다. 1. 다음 코드에서 출력되는 값은 무엇입니까? int n = 5; std::cout

[C++ 강좌 해답] 1-5. 입력 문제 정답 공개 및 해설

https://karupro.tistory.com/8 [카루의 C++ 강좌] 1-5. 입력받기 - std::cin과 std::scanf() 이제는 사용자에게서 직접 값을 입력받아보겠습니다. 소통하는 프로그램의 시작입니다. C++에서 입력은 std::cin을 통해서 받으며, std::cout와는 방향이 반대인 >> 를 통해 값을 입력받습니다. #include karupro.tistory.com 1-5 강좌의 도전 과제 해답을 설명합니다. 1. 자신의 가족의 나이를 입력받아 그 합을 출력해 보세요. // 예시 답안 (전체 코드) #include int main() { int myage, momage, dadage, broage; std::cout > myage; std::cout > momage; std::..

C++20 Concepts 알아보기 (1)

환영합니다, Rolling Ress의 카루입니다. ​ 오늘은 C++20에 드디어 추가된 concept에 대하여 알아보겠습니다. 템플릿 매개변수에 제약을 거는 거죠. ​ concept이란, 템플릿을 사용할 때 일정한 타입들을 묶어주는 기능이라고 생각하는 게 편합니다. 타입 이름에 별칭을 붙여주는 동시에, 그 자체로 bool값을 가지게 되죠. 에 있는 is_same_v 와 같이 ~_v 변수랑 비슷하다고 보시면 됩니다. 다만, 변수가 아니라 타입으로 쓸 수 있습니다. ​ 선언은 이렇게 합니다. template //반드시 template 필요 concept 컨셉이름 = bool값의 식 또는 requires 구문 // Concepts TS 시절에는 아래와 같은 구문도 지원했으나, 이제는 지원하지 않습니다. // ..

[C++20 특수 강좌] 선택문 최적화를 위한 [[likely]], [[unlikely]]

선택지가 2개 있으면, 그 중 하나를 고를 확률은 일반적으로 50%가 되겠죠. 그러나, 하나가 훨씬 많이 선택될 게 불보듯 뻔한 상황이 있어도, 컴파일러는 그걸 모릅니다. 개발자가 직접 알려줘야 하죠. ​ 그래서 이번에 새로 등장한 특성 [[attribute]] 이 바로 likely입니다. std::cout input; input == 0) { } else { } 위 경우에는 압도적으로 0이 많을 겁니다. 하지만 if문에서 0이 가장 위에 있고, 가장 먼저 실행될 것이니 별 필요성이 느껴지지 않죠. 다음과 같은 경우라면 어떨까요? std::cout input; input) { case 1: break; case 2: break; case 3: [[fallthrough]]; case 4: exit(0); ..

[C++17 심화 강좌] 스마트 포인터 편리하게 사용하기

장렬히 떠나신 auto_ptr에 대한 내용은 기술하지 않겠습니다. 평소에 자주 쓰는 스마트 포인터는 shared_ptr, unique_ptr 이 둘뿐이라고 생각합니다. shared_ptr p(new int[10], [](int* p){ delete[] p; }); 아마 배열을 쓰신다면 이렇게 쓰시겠죠. 그렇다고 함수객체를 쓰기엔 너무 복잡하니까. 하지만 C++17에선 타입을 T[]라고 쓰는 것만으로도 알아서 다~ 해제해줍니다. shared_ptr p(new int[10]); 하지만 shared_ptr은 tuple이나 array와 달리 Deduction Guide가 존재하지 않습니다. (존재하긴 합니다. weak_ptr이나 unique_ptr일때만....) 그래서 제가 한번 만들어봤습니다. template..

[C++ 심화 강좌] C++20 <=> Three-way 비교 연산자

환영합니다, Rolling Ress의 카루입니다. ​ 사실 작성한 건 3월...? 정도인데, 어쩌다가 이제서야 올리는지...아무튼 시작하겠습니다. 드디어 이걸 포스팅하는 날이 오네요. 제가 이해하는데도 상당한 시간이 걸린, Three-way Comparsion Operator 입니다. 이건 다른 것보다 클래스에서 비교 연산자를 만들 때 특히 도움이 되겠더라고요. , =, ==, != 정의할 필요 없이 auto operator 한방이면 끝납니다. ​ 일단 이게 무엇인지는 알아야겠죠. 그 전에, 중학교 3학년 수학에서 배우셨을 법한 실수의 대소비교에 대해서 알아보도록 하겠습니다. ​두 실수 a, b에 대해 반드시 위 세 가지 중 하나가 성립하죠. 한 실수에서 다른 실수를 뺀 값을 0과 비교하면 크기를 알 수..

반응형