본문 바로가기

분류 전체보기

(78)
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 ..
백준 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++ 클래스 멤버변수 초기화를 알아보자 클래스를 사용할 때, 클래스 안에 있는 멤버 변수에 대해서 초기화를 해줘야한다는 것은 잘 알고 있는데 여러가지 방법 중 어느 것을 써야할까? 에 대해서 다뤄보려고 한다 또 헷갈리는 일이 없도록 ~~ - 클래스 멤버 변수란 - 클래스 멤버 변수 초기화 방법 3가지 1. 클래스 멤버 변수 (Class Member Variable) 란 클래스 멤버 변수 초기화를 하려면, 먼저 멤버 변수를 알아야하니까 짧게 정리만 하려고 한다 위키백과 인용: 객체 지향 프로그래밍에서 멤버 변수(member variable) 또는 멤버 필드는 특정 객체와 연결된 변수의 하나이며, 해당 변수의 모든 메소드(멤버 함수)에 접근이 가능하다. 클래스 기반 언어에서 이들은 두 종류로 구별된다: ..... 그렇다.. 정의를 읽으면 알 수 ..
HTTP Chunked Message를 알아보자 # if 0 두달간의 노예 일상을 이제야 끝나고,, 너무 오랜만에 들여다본 블로그,, 개발자로 지내고 있지만,, 일하고 싶지는 않은 그런 삶,, 갑작스럽게 HTTP 프로토콜을 구현해야할 일이 생겨서, 규격 참고하고 구글링 하며 공부한 주제로 오늘은,, 해볼까 합니다,, #endif HTTP 라는 단어는 많이 들어보셨을거라고 생각합니다 그 중에서, Chunked 라는 단어는 조금 생소할 수도 있는데 규격대로만 생각한다면 그리 어렵지 않은 (구현은 까다로울 겁니다..) HTTP Chunked Message를 알아보도록 할겁니다,, - 아주아주 간단한 HTTP Protocol 설명 - HTTP Header와 Body를 읽는 방법 - HTTP Chunked Message란 무엇인가 1. HTTP(HyperTex..
C++ 대문자/소문자 변환 너무 바빠서 긴 포스팅 글의 마무리를 못하고 있다.. 일단 가벼운거라도 올려야 들 억울할 것 같다 1. std::transform 사용 2. std::toupper & std::tolower 사용 3. boost::to_upper 와 to_lower 사용 1. std::transform 구글에 "C++ 대소문자 변환" 이라고 검색하면 아마 가장 먼저 보이는 라이브러리이지 않을까 싶다 사용 방법을 보기전에 cppreference에 있는 함수 형태를 먼저 보겠다 * 헤더 #include 헤더는 요렇고,, * 함수 원형(?) template OutputIt transform( InputIt first1, Inpu..
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