분류 전체보기
-
C++ Study. stl unordered_setc++ 2024. 1. 21. 16:48
1. 소개 **std::unordered_set**은 C++ STL의 일부로 해시 테이블을 기반으로 하는 무순서 집합을 구현한 컨테이너입니다. 해시 함수를 사용하여 빠르게 요소에 접근할 수 있어서 검색, 삽입, 삭제 작업이 상수 시간에 이루어집니다. C++11부터 도입되었으며, 해시맵(std::unordered_map)과 비슷한 방식으로 동작합니다. 2. 특징 2.1 무순서성 순서가 없는 집합이기 때문에 요소의 순서가 유지되지 않습니다. 따라서 범위 기반 루프 등에서 예상한 순서대로 순회되지 않습니다. 2.2 중복 허용되지 않음 각 요소는 유일해야 합니다. 중복된 요소는 하나로 취급됩니다. 2.3 해시 함수 사용 해시 함수를 통해 각 요소를 버킷으로 매핑하므로 상수 시간 내에 요소에 접근할 수 있습니다...
-
C++ 스터디. standard template libraryc++ 2024. 1. 21. 16:45
c++ STL(표준 템플릿 라이브러리)는 Alexander Stepanov가 c++ 프로그래밍을 위해 고안한 라이브러리로, c++ standard library에 큰 영향을 미쳤다. https://en.wikipedia.org/wiki/Standard_Template_Library STL의 종류 container: https://en.cppreference.com/w/cpp/container sequence container(순차적 컨테이너) vector, list, deque, arrays, forward_list container adaptor 기존의 컨테이너를 새로운 인터페이스에 맞게 조정하는 역할 queue(deque 기반), priority_queue(vector기반), stack(리스트 기반)..
-
C++ Primer CH15. Object-Oriented Programmingc++ 2024. 1. 21. 16:39
15.1 OOP: An Overview OOP의 주요 아이디어는 데이터 추상화, 상속, 동적 바인딩이다. 데이터 추상화: 인터페이스와 구현 분리 가능 상속: 비슷한 타입들간의 관계를 모델링 가능 동적 바인딩: 비슷한 타입들을 다른점들을 무시하면서 사용 가능 상속 base class(기본 클래스) virtual 함수를 정의하고 derived class(파생 클래스)가 이를 구현하도록 함 // base class class Quote { public: string isbn() const; virtual double net_price(size_t n) const; }; // derived class class Bulk_quote : public Quote { public: double net_price(siz..
-
C++ Primer CH13. Copy Controlc++ 2024. 1. 21. 16:35
keywords: copy constructor, move constructor, copy-assignment operator, move-assignment operator, destructore copy control 명시적으로 정의해놓지 않으면 컴파일러가 알아서 만들어서 사용함 → 오작동 가능성 13.1.1 The Copy Constructor 규칙1: copy constructor의 첫번째 인자는 무조건 참조자이다. 보통 const 붙인다. The synthesized Copy Constructor 컴파일러가 자동생성해주는 것을 의미 default constructor과는 달리, 우리가 다른 copy constructor 명시적 정의해줘도 컴파일러가 생성해줌 copy constructor의 각각의 ..
-
C++ Primer CH12. Dynamic Memoryc++ 2024. 1. 21. 16:33
원래 객체들은 lifetime(생명주기)가 이랬다. - static 객체들: 프로그램 생성시 생성되고 종료시 해제됨. - 지역 객체들: scope 벗어날 시 해제됨 - 함수 밖 객체들: 프로그램 생성시 생성되고 종료시 해제됨. → 어디에? data 영역에 → data 영역: 전역변수와 static 변수를 저장하는데 사용됨. 프로그램 종료시까지 존재함 지금까지는 다 스택에서 메모리 할당해서 사용하는 방식이었다. 이제는 힙 영역에서 메모리 공간할당해서 사용하는 방법을 알아보자. 우선, new 메서드와 smart pointer 가 나온다. 둘 다 힙 영역을 사용해서 데이터를 할당한다. 동적 메모리 할당은 런타임에 일어난다. 왜 동적 메모리가 필요한가? 얼마나 공간을 사용할지 모르기 때문에 어떤 타입을 사용할지..
-
C++ Primer CH11. Associative Containersc++ 2024. 1. 21. 16:27
정렬하고 싶을 때, bool compareIsbn(const Sales_data &lhs, const Sales_data &rhs) { return lhs.isbn() < rhs.isbn(); } multiset bookstroe(compareIsbn); Pair pair anon; pair word_count; pair line; p.first p.second pair 리턴하기 pair process(vector &v) { if (!v.empty()) return {v.back(), v.back().size()}; else return pair(); } set::key_type k1; // string set::value_type v1; // string map::key_type k1; // strin..
-
C++ Primer CH10. Generic Algorithmsc++ 2024. 1. 21. 16:26
알고리즘 함수 종류는 100여개가 넘는다. 다 외우기 힘드니까 분류를 해보자 10.2.1 Read-Only Algorithms 10.2.2 Write Container Elements Algorithms 10.2.3 Reorder Container Algorithms 10.3 Customizing Operations 10.3.1 Passing a Function to an Algorithm predicates 조건으로 활용될 수 있는 expression(표현식), 함수 10.3.2 Lambda Expressions 이름 없는 inline 함수라고 생각하면 된다. Lambda 형태 [capture list](parameter list) -> return type { function body } [sz](c..