C++

[Basic C++] #1 Map, Unordered_map, 해쉬 테이블 자료구조 중 해쉬 테이블(Key-Value-Pair)과 C++ STL이 제공하는 컨테이너 "map" , 그리고 "unordred_map"에 대해서 알아보겠습니다. Hash Table(해쉬 테이블), key-value 쌍, 자료 구조 해쉬 테이블이란, "키"를 해쉬 값으로 매핑하여, 이 해쉬 값을 인덱스 혹은 주소 삼아 "값"을 "키"와 함께 쌍으로 저장하여 검색이 빠른 연관 배열 자료구조입니다 -"키"와 "값"의 1대 1 연관 관계를 형성하는 자료구조입니다. 쉽게 말하자면, "Key-Value"를 한 쌍으로 저장하는 자료구조입니다. 이때, 키 값을 입력으로 받는 해쉬 함수는 한 쌍으로 저장될 "값"의 저장 위치, 혹은 bucket..
[Effective C++] #41 템플릿, 암시적 인터페이스, 컴파일 타임 다형성, 유효 표현식 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 7장 "템플릿과 일반화 프로그래밍", 항목 41 "템플릿 프로그래밍의 천릿길도 암시적 인터페이스와 컴파일 타임 다형성부터"에 해당하는 내용입니다. 클래스, 명시적 인터페이스, 런타임 다형성 class Widget { public: Widget(); virtual ~Widget(); virtual std::size_t size() const; virtual void normalize (); void swap(Widget& w); ... }; Widget 클래스 객체는 Wid..
[Effective C++] #40 다중 상속 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 6장 "상속, 그리고 객체 지향 설계", 항목 40 "다중 상속은 심사숙고해서 사용하자"에 해당하는 내용입니다. 다중 상속 MI(다중 상속)이란, 어떤 클래스가 두 개 이상의 상위 클래스로부터 상속받는 형태를 말합니다. 이번 항목에서는 다중 상속 사용 과정에서 주의할 점과 적절한 상황 등을 살펴보겠습니다. 1. 모호성 문제 class A { public: void checkOut(); ... }; class B { private: void checkOut(); ... }; class C : public A, public B..
[Effective C++] #39 private 상속 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 6장 "상속, 그리고 객체 지향 설계", 항목 39 "private 상속은 심사숙고해서 구사하자"에 해당하는 내용입니다. private 상속의 특징 class Person {...}; class Student : private Person {...}; void Eat(const Person& p){...}; Person* p; Student* s; Eat(p);//OK! Eat(s);// NO! private 상속의 의미는 "is-implemented-in-terms-of"입니다. private 상속의 첫 번째 동..
[Effective C++] #38 객체 합성, private 영역 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 6장 "상속, 그리고 객체 지향 설계", 항목 38 "has-a 혹은 is-implemented-in-terms-of를 모형화할 때는 객체 합성을 사용하자"에 해당하는 내용입니다. 객체 합성 class Address {...}; class PhoneNumber {...}; class Person { public: ... private: std::string Name; Address addr; PhoneNumber voiceNumber; PhoneNumber faxNumber; } "객체 합성"이란, 어..
[Effective C++] #37 가상 함수, 기본 매개변수 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 6장 "상속, 그리고 객체 지향 설계", 항목 37 "어떤 함수에 대해서도 상속받은 기본 매개변수 값은 절대로 재정의하지 말자"에 해당하는 내용입니다. 가상 함수, 동적 바인딩 class Shape { public: virtual void Draw(ShapeColor color = Red) const = 0; enum ShapeColor { Red, Blue, Green }; ... }; class Rectangle : public Shape { virtual void Draw(ShapeColor color..
[Effective C++] #36 비 가상 함수의 상속, 바인딩 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 6장 "상속, 그리고 객체 지향 설계", 항목 36 "상속받은 비 가상 함수를 파생 클래스에서 재정의하는 것은 절대 금물!"에 해당하는 내용입니다. 비 가상 멤버 함수 class A { public: void mf();// 비 가상 멤버 함수 virtual void mf2();// 가상 멤버 함수 ... }; class B : public A {...}; 기본 클래스에 대한 public 상속은 "is... a" 상속입니다. 이전 항목에서 다뤘던 내용입니다. public 상속이란, 클래스 "B"를 클래스 ..
[Effective C++] #35 Public 가상 함수의 대안, NVI, 전략 패턴 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 6장 "상속, 그리고 객체 지향 설계", 항목 35 "가상 함수 대신 쓸 것들도 생각해 두는 자세를 시시때때로 길러 두자"에 해당하는 내용입니다. 가상 함수 class someClass { public: virtual int virtualFunc() const; ... }; 가상 함수의 선언은 파생 클래스로 하여금 인터페이스와 기본 구현을 제공받도록 하고, 각 파생 클래스의 필요에 의해 재정의 할 수 있도록 해줍니다. 멤버 함수들의 인터페이스 상속과 구현 상속 관련 내용은 링크를 참..
[BOJ 알고리즘, C++] #10814 나이순 정렬 BOJ 알고리즘 문제 풀이, 10814번 문제 : 나이순 정렬 입력받은 정보를 통해, 나이순으로 정렬하고 나이가 같다면 입력 순으로 정렬 문제 더보기 sort() 함수 [BOJ알고리즘, C++]#2751 수 정렬하기 2 [BOJ 알고리즘, C++] #2751 수 정렬하기 2 BOJ 알고리즘 문제 풀이, 2751번 문제 : 수 정렬하기 2 정렬 알고리즘을 사용하여 배열의 원소들을 오름차순으로 정렬합니다. 문제 std::sort() C++의 헤더파일에서 webddevys.tistory.com 풀이 과정 1. 나이와 이름을 한 객체에 저장하기위해 "pair "을 생성합니다. 2. 각각의 pair들을 정렬 하기위해 "vector "을 생성합니다. 3. sor..
[BOJ 알고리즘, C++] #1181 단어 정렬 BOJ 알고리즘 문제 풀이, 1181번 문제 : 단어 정렬 입력받은 단어들을 우선 길이 순으로 정렬, 길이가 같다면 사전 순으로 정렬 문제 풀이 과정 1. string 타입을 담을 vector 생성 2. 정렬 함수 정의, a.length 와 b.length를 먼저 비교, 같다면 a N; string str; v..
Hardii2
'C++' 태그의 글 목록 (35 Page)