728x90 C++ 썸네일형 리스트형 [C++][Effective C++] 49~52. new와 delete를 내 맘대로 [Effective C++(3판)]에 대한 내용을 공부하면서 정리한 내용이다. 이번에 요약하는 내용은 49~52 항목으로 아래와 같다. 49. new 처리자의 동작 원리를 제대로 이해하자 50. new 및 delete를 언제 바꿔야 좋은 소리를 들을지를 파악해두자 51. new 및 delete를 작성할 대 따라야 할 기존의 관례를 잘 알아 두자 52. 위치 지정 new를 작성한다면 위치 지정 delete도 같이 준비하자 요약 49. new 처리자의 동작 원리를 제대로 이해하자 사용자가 보낸 메모리 할당 요청을 operator new 함수가 만족하지 못할 경우에는 예외를 던지고 있다. 예전에는 malloc을 사용한 것과 같이 NULL 포인터를 반환했다. 메모리 할당에 실패한 경우 예외를 던지기 전에 사용자.. 더보기 [백준알고리즘] 5904번: Moo 게임 -C++ [백준알고리즘] 5904번: Moo 게임 -C++ 5904번: Moo 게임 (acmicpc.net) 5904번: Moo 게임 Moo는 술자리에서 즐겁게 할 수 있는 게임이다. 이 게임은 Moo수열을 각 사람이 하나씩 순서대로 외치면 되는 게임이다. Moo 수열은 길이가 무한대이며, 다음과 같이 생겼다. m o o m o o o m o o m o o o www.acmicpc.net 분할 정복 문제로, 이래저래 고민하다가 길이를 기준으로 재귀적으로 풀었다. 최악의 경우라도 수의 범위나 시간이 재귀적으로도 충분할 것이라 생각했다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 문제 풀이 문제에서 주어진 조건을 이용했다. \(M(k) =\ 'o'가\ k+2개인\ mo..o\ 문자열\) \(S(k) = S(.. 더보기 [C++][Effective C++] 41~48. 템플릿과 일반화 프로그래밍 [Effective C++(3판)]에 대한 내용을 공부하면서 정리한 내용이다. 이번에 요약하는 내용은 41~48 항목으로 아래와 같다. 41. 템플릿 프로그램이의 천릿길도 암시적 인터페이스와 컴파일 타임 다형성부터 42. typename의 두 가지 의미를 제대로 파악하자 43. 템플릿으로 만들어진 기본 클래스 안의 이름에 접근하는 방법을 알아 두자 44. 매개변수에 독립적인 코드는 템플릿으로부터 분리시키자 45. "호환되는 모든 타입"을 받아들이는 데는 멤버 함수 템플릿이 직방! 46. 타입 변환이 바람직할 경우에는 비멤버 함수를 클래스 템플릿 안에 정의해 두자 47. 타입에 대한 정보가 필요하다면 특성정보 클래스를 사용하자 48. 템플릿 메타프로그래밍, 하지 않겠는가? 요약 41. 템플릿 프로그램이의 .. 더보기 [C++][Effective C++] 32~40. 상속, 그리고 객체 지향 설계 [Effective C++(3판)]에 대한 내용을 공부하면서 정리한 내용이다. 이번에 요약하는 내용은 32~40 항목으로 아래와 같다. 32. public 상속 모형은 반드시 "is-a"를 따르도록 만들자 33. 상속된 이름을 숨기는 일은 피하자 34. 인터페이스 상속과 구현 상속의 차이를 제대로 파악하고 구별하자 35. 가상 함수 대신 쓸 것들도 생각해 두는 자세를 시시때때로 길러 두자 36. 상속받은 비가상 함수를 파생 클래스에서 재정의하는 것은 절대 금물! 37. 어떤 함수에 대해서도 상속받은 기본 매개변수 값은 절대로 재정의하지 말자 38. "has-a" 혹은 "is-implemented-in-terms-of"를 모형화할 때는 객체 합성을 사용하자 39. private 상속은 심사숙고해서 구사하자.. 더보기 [백준알고리즘] 4375번: 1 -C++ (테스트케이스의 개수가 주어지지 않은 경우) [백준알고리즘] 4375번: 1 -C++ (테스트케이스의 개수가 주어지지 않은 경우) 4375번: 1 (acmicpc.net) 4375번: 1 2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오. www.acmicpc.net 정수론 문제를 보다가 재밌어 보여서 풀어봤다. 처음에 문제가 뭔 소리인지 몰랐다가 문제를 이해하고 나서는 쉽게 풀 수 있었다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 문제 풀이 문제에서 요구하는 것은 정말 1로 이루어진 수(1, 11, 111,...) 중에서 N의 배수인 값의 자릿수를 구하는 것이다. 따라서, 정말 간단하게 뒤에 1을 붙이면서 N으로 나누어 떨어지는지 확인하면 된다. .. 더보기 [백준알고리즘] 1715번: 카드 정렬하기 -C++ [백준알고리즘] 1715번: 카드 정렬하기 -C++ 1715번: 카드 정렬하기 (acmicpc.net) 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 그리디 알고리즘을 몇 개 풀어보면서 느낀 게, 참 SJF 방식만 알면 모든 문제가 쉽게 생각되는 것 같다. 그만큼 SJF가 대표적인 그리디적인 방식인 것이기도 하지만 말이다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 문제 풀이 우선, 카드의 개수를 봤을 때 굳이 배열을 안 쓰고 map을 써도 시간이 충분하겠다고 생각이 들었다. map과.. 더보기 [C++][Effective C++] 26~31. 구현 [Effective C++(3판)]에 대한 내용을 공부하면서 정리한 내용이다. 이번에 요약하는 내용은 26~31 항목으로 아래와 같다. 26. 변수 정의는 늦출 수 있는 데까지 늦추는 근성을 발휘하자 27. 캐스팅은 절약, 또 절약! 잊지 말자 28. 내부에서 사용하는 객체에 대한 "핸들"을 반환하는 코드는 되도록 피하자 29. 예외 안전성이 확보되는 그날 위해 싸우고 또 싸우자! 30. 인라인 함수는 미주알고주알 따져서 이해해 두자 31. 파일 사이의 컴파일 의존성을 최대로 줄이자 요약 26. 변수 정의는 늦출 수 있는 데까지 늦추는 근성을 발휘하자 프로그램 제어 흐름이 변수의 정의에 닿으면 생성자가 호출된다. 그리고 그 변수가 유효 범위를 벗어나면 소멸자가 호출된다. 이런 비용을 낭비하지 않기 위해서.. 더보기 [C++][Effective C++] 18~25. 설계 및 선언 [Effective C++(3판)]에 대한 내용을 공부하면서 정리한 내용이다. 이번에 요약하는 내용은 18~25 항목으로 아래와 같다. 18. 인터페이스 설계는 제대로 쓰기엔 쉽게, 엉터리로 쓰기엔 어렵게 하자 19. 클래스 설계는 타입 설계와 똑같이 취급하자 20. '값에 의한 전달'보다는 '상수객체 참조자에 의한 전달' 방식을 택하는 편이 대개 낫다 21. 함수에서 객체를 반환해야 할 경우에 참조자를 반환하려고 들지 말자 22. 데이터 멤버가 선언될 곳은 private 영역임을 명심하자 23. 멤버 함수보다 비멤버 비프렌드 함수와 더 가까워지자 24. 타입 변환이 모든 매개변수에 대해 적용되어야 한다면 비멤버 함수를 선언하자 25. 예외를 던지지 않는 swap에 대한 지원도 생각해 보자 요약 18. .. 더보기 이전 1 ··· 3 4 5 6 7 8 9 ··· 18 다음