C++

[BOJ 알고리즘, C++] #11650 좌표 정렬하기 BOJ 알고리즘 문제 풀이, 11650번 문제: 좌표 정렬하기 입력받은 좌표들을 우선 조건과 차선 조건으로 정렬합니다. 문제 정렬 함수, Comparison "sort()"는 기본적으로 세 개의 매개변수를 받습니다. 마지막 매개 변수로 사용자 정의 함수를 받습니다. 사용자 정의 함수는 "BOOL" 타입을 반환하는 함수로, i와 j, 혹은 앞 선 원소와 바로 뒤의 원소를 사용자가 원하는 기준으로 오름차순 정렬인지 혹은 내림차순 정렬인지 sort 함수에게 알려줍니다. 풀이 과정 1. 헤더 파일을 추가하고, pair 클래스를 생성합니다. 2. vector를 통해 벡터를 생성합니다. 3. sort 함수를 사용하여, 오름차순으로 정렬합니다. 이때, 정렬 함수..
[BOJ 알고리즘, C++] #1427 소트 인사이드 BOJ 알고리즘 문제 풀이, 1427번 문제: 소트 인사이드 정렬 알고리즘을 사용하여 입력받은 수의 자릿수들을 내림차순으로 정렬합니다. 문제 std::sort() 활용 [BOJ알고리즘, C++]#2751 수 정렬하기 2 [BOJ 알고리즘, C++] #2751 수 정렬하기 2 BOJ 알고리즘 문제 풀이, 2751번 문제 : 수 정렬하기 2 정렬 알고리즘을 사용하여 배열의 원소들을 오름차순으로 정렬합니다. 문제 std::sort() C++의 헤더파일에서 webddevys.tistory.com 풀이 방법 1. "to_string"을 사용하여 입력받은 integer 타입을 string으로 변환합니다. 2. for 문을 사용해서, 각각의 문자를 숫자로 변환( ..
[Effective C++] #34 인터페이스 상속, 구현 상속, 차이점 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 6장 "상속, 그리고 객체 지향 설계", 항목 34 "인터페이스 상속과 구현 상속의 차이를 제대로 파악하고 구별하자"에 해당하는 내용입니다. 인터페이스 상속, 구현 상속 class Shape { public: virtual void draw() const = 0;//순수 가상 함수 virtual void error(const std::string& msg);//단순 가상 함수 int objectID() const; //비가상 함수 ... }; class Rect : public Shape{...}..
[Effective C++] #23 비 멤버, 비 프렌드 함수 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 4장 "설계 및 선언", 항목 23 "멤버 함수보다는 비 멤버 비 프렌드 함수와 더 가까워 지자"에 해당하는 내용입니다. 비 멤버 함수 class WebBrowser { public: ... void clearCache(); void clearHistory(); void clearCookies(); void ClearBrowser();// 멤버 버전의 clear 함수 ... }; void ClearBrowser(WebBroswer& wb)// 비 멤버 버전의 clear 함수 { wb.clearCache();..
[Effective C++] #21 클래스 데이터 멤버, 접근 제어, 접근 지정자 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 4장 "설계 및 선언", 항목 22 "데이터 멤버가 선언될 곳은 private 영역임을 명심하자"에 해당하는 내용입니다. 접근 제어 (public, protected, private) C++의 멤버 접근 제어 관련하여, public, protected, 그리고 private 영역에 대해 먼저 알아보겠습니다. 접근 제어 개념은 C++의 세 가지 중요 요소 중 "캡슐화"와 관련이 있습니다. C++의 "캡슐화"는 객체지향적 측면에서 두 가지를 생각해 볼 수 있습니다. 하나는 객체의 상태(데이터..
[Effective C++] #20 값에 의한 전달, 참조자에 의한 전달 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 4장 "설계 및 선언", 항목 21 "함수에서 객체를 반환해야 할 경우에 참조자를 반환하려고 들지 말자"에 해당하는 내용입니다. 참조자를 반환하는 함수 class Rational { public: Rational(const int numerator, const int denominator) :n(numerator), d(denominator){} private: int n, d; friend const Rational operator*(const Rational& lhs, const Rationa..
[Effective C++] #20 값에 의한 전달, 참조자에 의한 전달 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 4장 "설계 및 선언", 항목 20 "값의 의한 전달보다 상수 객체 참조자에 의한 전달 방식을 택하는 편이 대개 낫다"에 해당하는 내용입니다. 값에 의한 전달 C++는 함수로부터 객체를 전달받거나, 함수에게 객체를 전달할 때 '값에 의한 전달' 방식을 사용합니다. '값에 의한 전달'은 함수의 매개 변수를 전달받은 인자의 사본을 통해 초기화됩니다. 더불어 반환 값 또한 함수가 반환한 값의 사본입니다. 사본을 만드는 동작은 복사 생성자의 호출을 의미하죠. 이러한 점 때문에 '값에 의한 전달'은 비효율..
[Effective C++] #19 클래스 설계 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 4장 "설계 및 선언", 항목 19 "클래스 설계는 타입 설계와 똑같이 취급하자"에 해당하는 내용입니다. 클래스 설계 함수와 연산자를 오버로드 하고, 메모리 할당 및 해제를 제어하며, 객체 초기화 및 소멸을 정의하는 작업이 클래스 설계입니다. 몇 가지 질문들에 대해 고찰하며, 효과적인 클래스 설계에 대한 방향을 짐작해 보겠습니다. 1. 객체 생성 및 소멸은 어떻게 이루어지는가? 이 질문을 통해, 우리는 클래스 생성자 및 소멸자의 설계를 준비합니다. 더불어, 메모리 할당 함수를 직접 작성할 경우에도 영향을 미칩니다. 2. ..
[Effective C++] #18 인터페이스 설계 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 4장 "설계 및 선언", 항목 18 "인터페이스 설계는 제대로 쓰기엔 쉽게, 엉터리로 쓰기엔 어렵게 하자"에 해당하는 내용입니다. 인터페이스 이번 항목에서 다룰 "인터페이스"란, C++에서 제공하는 "__interface" 혹은 추상 클래스로 특정 짓는 것이 아니라, 사용자가 코드 작성 시 사용하는 함수, 클래스, 그리고 템플릿 등을 의미합니다. 인터페이스의 정의가 의미하는 바, 그 자체를 의미합니다. 건물을 짓기 위한 기반 및 자재들이라고 볼 수 있죠. 책에서 설명하는 인터페이스 설계의 궁극적인 목적은 사용자가 원하..
[Effective C++] #17 자원 관리 객체와 new 사용 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 3장 "자원 관리", 항목 17 "new로 생성한 객체를 스마트 포인터에 저장하는 코드는 별도의 한 문장으로 만들자"에 해당하는 내용입니다. 자원 관리 객체의 메모리 동적 할당 void someFunc (std::tr1::shared_ptr, int priority){ ... }; int priority = 1; someFunc(std::tr1::shared_ptr(new A_클래스), priority); 위 예제 코드는 동적으로 할당받은 A_클래스 객체에 대한 자원 관리 객체(shared_ptr)와 정..
Hardii2
'C++' 태그의 글 목록 (36 Page)