C++ 17

C++ 스마트 포인터를 알아보자 - (1) unique_ptr

C++에는 아주 유용한 개념이 있다 메모리 관리를 할 때마다 고려해야할 점은 바로 "메모리 누수"인데, 그것에 대해 조금은 자유롭게 생각할 수 있는 스마트 포인터라는 것이다 가장 자주 사용하는건 shared_ptr이었는데, 여러 개가 있는건 이유가 있다는 생각이 들어서 하나씩 정리하려고 한다 (모던 C++ 입문 교재를 참고해서 작성하였습니닥) 1. 스마트 포인터에는 뭐가 있지? 스마트 포인터는 3가지가 있다 1) unique_ptr (오늘할거) 2) shared_ptr 3) weak_ptr 요렇게 3가지 인데, 참고로 스마트 포인터는 C++ 11에서 도입된 개념이다 C++ 03에는 auto_ptr라는 것도 있다고 한다 -_-a 하지만 삭제됨 쓰지마셈 1-1) 스마트 포인터 헤더는? #include or ..

📖 C랑 C++ 2021.05.25

백준 4673번: 셀프넘버 (C++)

https://www.acmicpc.net/problem/4673 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net #include #include #define MAX_NUM 10000 using namespace std; int selfNum(int num) { int sum = num; int d = num; do{ sum += d%10; d = d/10; }while(d!=0); return sum; } int main(void) { int n = 1; ..

백준 8958번: OX 퀴즈 (C++)

https://www.acmicpc.net/problem/8958 8958번: OX퀴즈 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수 www.acmicpc.net #include #include #include using namespace std; int countOXStr(string ox_str) { int len = ox_str.length(); int sum = 0; int score = 0; for( int i = 0; i < len; i++ ) { auto ox = ox_str.at(i); if( ox == 'O' ) { sc..

Boost Asio에 대해서 알아보자

Boost 비동기 통신 서버&클라이언트를 정리중... 필수 개념인 Asio에 대해서 먼저 정리해야겠다 생각들어서 따로 게시글로 뺐다 ㅈㄱㄴ boost 홈페이지에 설명이 잘 되어있어서, 요걸 정리하려고 한다 (첨부 링크 참조) 1. Boost.Asio ( Asynchronous I/O ) 가 뭐지? Boost 공식홈피: Boost.Asio is a cross-platform C++ library for network and low-level I/O programming that provides developers with a consistent asynchronous model using a modern C++ approach. cf) 어떤 운영체제여도, 실행 가능하게 동작하게 할 수 있는 플랫폼이 크로스..

📖 C랑 C++ 2021.05.20

C++ Function Object (함수 객체)를 알아보자

Lamda (람다) 포스팅을 하기 위해 공부하던 중,, 이상하게 글이 안써졌다. 기초 없이 사용할려고 하니까 그런것 같아서 함수 객체에 대해 먼저 공부를 해보려고 한다 1. 함수 호출 연산자 함수 객체를 사용해보기 전에, 함수 호출 연산자를 봐보겠다 아주아주 간단한 예시를 들어보겠다 #include #include using namespace std; int myPlus(int num1, int num2) { return num1+num2; } int main(void) { int num1 = 10; int num2 = 20; cout

📖 C랑 C++ 2021.01.22

C++ std::map을 사용해보자

C 개발을 하다보면 느끼는게 하나 있다 정말,, 자료구조 관리하기 힘들다라는거다 (나만 그럴지도 모른다) 그래서 C++에서 STL이 제공하는 여러 자료구조를 사용하면서 너무 편리했다 cf) STL (Standard Template Library) 표준 라이브러리로, std:: namespace를 붙여서 사용하면 된다 하지만 한 두개 사용할 수록, 작은거 하나도 헷갈려서 정리하기로 했다 - map 정의 방법 - map 요소 삽입 - map 요소 검색 - map 요소 삭제 - map 순회 - map 크기 구하기 0. map이 뭔가요? 위키백과: 다수 프로그래밍 언어에서, map은 고차 함수로서 전해진 함수를 배열의 모든 요소에 적용(apply)하여 그 결과 배열을 전달한다. KEY와 VALUE 형태로 되어있..

📖 C랑 C++ 2021.01.07

C++ 전역 변수와 정적 변수를 알아보자

전역변수와 지역변수는 많이 들어볼 용어이다. 지역변수는 함수 안에서 선언하여 사용하는 변수이고, 전역 변수는 지역변수와 다르게 전체에서 사용한다는 의미로 받아들인 다면, 간단하게 이해가 가능하다 실제 코드에서도 사용하기 어렵지 않다. 간단한 예시를 들어본다면 string globalVar; void test() { string localVar; } 위치만 바뀐다고 생각해도 괜찮을 정도이다. (물론 문법이 추가될 수는 있다.) 그러면 정적(Static) 변수는 무엇인지, 전역변수랑 차이가 뭔지 알아보려고 한다. (지역변수는 따로 정리하지 않아도 될 것 같아서 패쓰 😀) 개념에 대한 설명은 아래에 자세히 적을거고, 급한 분들을 위해 어떻게 쓰는지만 먼저 정리하자면 1. 전역 변수 사용 extern strin..

📖 C랑 C++ 2021.01.04