c++
-
C++ Study. module systemc++ 2024. 1. 21. 16:52
C++ 모듈 시스템은 C++20 표준의 중요한 새로운 기능 중 하나입니다. 이 시스템은 헤더 파일 기반의 전통적인 include 시스템 대신 소스 코드를 모듈 단위로 구성하는 방식으로 코드를 구성하도록 하는 것을 목표로 합니다. 여기에는 여러 가지 이점이 포함되어 있습니다. 모듈 정의 // helloworld.cpp export module helloworld; // module declaration import ; // import declaration export void hello() // export declaration { std::cout
-
C++ Study. move assignment operatorc++ 2024. 1. 21. 16:52
move semantics 기존의 복사 대입 연산자(copy assignment operator)와는 다르게 이동 대입 연산자(move assignment operator)를 이용하여 객체 소유권을 이전하여 메모리를 효율적으로 이동시키는 것 move semantics을 하기 위해 필요한 것들 std::move() 함수 복사 대입 연산자가 아닌 이동 대입 연산자를 호출하기 위해 사용 단순히, 전달받은 인자를 rvalue reference(참조자)로 캐스팅해서 리턴 rvalue reference로 캐스팅하려면 → 타입&& static_cast(obj) == std::move(obj1) // 양쪽이 같은 작업 수행 move assignment operator(이동 대입 연산자) 우항에 rvalue 참조자가 있..
-
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 가 나온다. 둘 다 힙 영역을 사용해서 데이터를 할당한다. 동적 메모리 할당은 런타임에 일어난다. 왜 동적 메모리가 필요한가? 얼마나 공간을 사용할지 모르기 때문에 어떤 타입을 사용할지..