C++
-
_C++_컨테이너 어댑터와 비트셋 컨테이너Programming/_C++ 2023. 9. 20. 19:09
컨테이너 어댑터 컨테이너 어댑터는 순차 컨테이너를 바탕으로 인터페이스를 다르게 래핑한 것을 말한다. 컨테이너 어댑터의 목적은 보다 단순화된 인터페이스를 제공하는 것이다. 기본적으로 다음 세 가지가 있다. queue priority_queue stack 1. queue queue는 헤더에 정의된 표준적인 선입선출(FIFO) 시멘틱을 구현한다. 다음과 같은 템플릿 정의를 갖는다. template class queue; deque 컨테이너를 기본 값으로 가지고 있으며, list도 사용할 수 있다. queue는 다음과 같이 생성할 수 있다. #include #include #include using namespace std; int main(){ queue q1; // 일반적인 생성방법. // deque를 참조..
-
_C++_lambdaProgramming/_C++ 2023. 9. 20. 18:02
람다(lambda)는 익명의 함수를 정의하는 표현식을 의미한다. 람다를 통해 클로져(Closure) 클래스가 정의됨. 람다는 캡처(capture), 인자(parameter), 반환형(return type), 몸통(body)로 구성되었다. //case 1 auto f = [captures](parameters) -> return type { body /* captures: 캡처들이 들어감 parameters: 함수의 인자들이 들어감 return type: 함수의 반환형 body: 함수의 몸통 */ } //case 2 #include function g = [](int param) { //function 템플릿을 사용하여 형식 지정이 가능하다. }; 위의 두 구조중 1번 구조가 효과적이다. 내부를 알 수 없..
-
_C++_알고리즘_Part_1Programming/_C++ 2023. 9. 19. 17:59
STL의 정렬 알고리즘은 순차 컨테이너와 배열에 적용할 수 있다. list, forword_list는 컨테이너 내부 구조에 최적화된 정렬 기능을 제공하기 때문에 굳이 사용할 필요가 없다. vector, deque, array클래스 및 배열에 대해서는 유용하게 사용할 수 있다. #include으로 사용할 수 있다. 정렬 알고리즘 sort() sort는 정렬을 도와준다. sort의 시간 복잡도는 N에 대해 O(NlogN). int arr[5] {3, 5, 1, 2, 6}; sort(arr, arr+5); // arr 정렬 vector v{3, 5, 1, 2, 6}; sort(v.begin(), v.end()); // v 정렬 sort(v.begin(), v.end(), greater()); // v 역순 정..
-
_C++_Smart_PointerProgramming/_C++ 2023. 9. 19. 17:14
C++의 raw 포인터는 강력한 수단이지만, 집중력이 조금만 흐트러지면 버그가 발생하가 쉽다. 이를 보완하기 위해 C++11에서는 스마트 포인터를 제공한다. 종류는 세 가지(네 가지 이지만, 하나는 비권장 기능) std::unique_ptr std::shared_ptr std::weak_ptr 1. unique_ptr unique_ptr은 독점적 소유권을 갖는 포인터.(피지칭 객체를 가르키는 포인터가 오직 그것 하나 뿐임을 의미) unique_ptr이 소멸될 때 피지칭 객체도 소멸됨. 이동 전용 형식으로서 복사가 불가능. 2. shared_ptr shared_ptr은 독점적 소유권을 갖지 않는 포인터. shared_ptr이 하나의 객체를 가리킬 수 있음. 같은 대상을 가리키는 shared_ptr들은 피지..