C++/STL (9) 썸네일형 리스트형 std::enable_shared_from_this [1. 개요]std::enable_shared_from_this 를 상속한 클래스 (여기서 템플릿 T는 상속한 클래스를 말함) 는멤버 함수 내에서 shared_from_this() 를 호출하여 자기 자신에 대한 shared_ptr 을 생성 할 수 있다. 이것이 주로 활용되는 시점은 다음과 같다.콜백에서 자기 자신을 공유해야 할 때 (재참조 할 때)자기 자신을 다른 shared_ptr 구조로 넘겨야 할 때기타...shared_ptr 을 공유한다는 의미는 아래와 같다.실제 객체는 하나임그러나 여러 곳에서 참조하게 됨그래서 더 이상 참조하는 곳이 없어지게 되면 해당 객체는 자동 소멸하게 됨.그래서, 콜백에서 자기 자신을 공유해야 한다는 것은 아래와 같은 의미가 있다.일반적으로 콜백이라 함 은 특정 이벤트 발.. std::thread vs std::async std::packaged_task [1. 개요]std::packaged_task는 C++11부터 도입된 기능으로, 함수나 함수 객체를 비동기적으로 실행시키고, 그 결과를 std::future를 통해 받아올 수 있도록 감싸주는 wrapper. 기본적으로 std::thread 로 실행 한 task 의 리턴 값을 받기 위한 별다른 메커니즘이 없다.std::promise 를 사용하는 것도 한가지 방법이기는 하지만,,,그러나, std::async 와 마찬가지로 task 의 리턴 값을 받기 위한 메커니즘을 제공한다는 측면이 있다.std::async 는 join() 을 따로 호출하지 않아도 되지만,std::thread 를 통해 호출하게 하므로, join() 의 호출은 필요 함.[2. 예제]가장 일반적인 사용 방법std::packaged_task 를 .. std::stringstream [1. 개요] [2. 주의 사항]초기화 명목으로 보통 명명되는 clear() 함수는 stringstream 에서는 의도한 대로 작동하지 않는다.내부 버퍼를 초기화하는 역할로 동작하지 않음.stream 에서 clear() 함수는 보통, flag 등을 초기화하는 역할을 하기 때문...# failbit / eofbit 등.따라서, 내부 버퍼를 초기화 하려면, 아래와 같이 빈 문자열을 설정하도록 해야한다..str(""); erase 계열 함수... [1. 개요]STL 컬렉션 들의 멤버 함수 erase() 의 리턴 값의 의미하는 바가 무엇인가?erase 의 입력으로 사용 된, 반복자의 다음위치를 가리키는 iterator 가 반환된다.[2. 예제]#include #include #include #include #include std::vector vec;std::list lst;std::map kv;std::unordered_set uos;void print_vec(){ std::cout "; auto itr1 = vec.erase(itr0); std::cout "; auto itr1 = lst.erase(itr0); std::cout first second "; auto itr1 = kv.erase(itr0); .. map 과 unordered_map 의 차이점. [1. 개요]std::map 은 이진 탐색 트리를 기반으로 한다.search 연산을 대상으로 로그의 시간복잡도를 갖는다.std::unorderd_map 은 해시 테이블을 기반으로 한다.key 에 대한 hash 함수가 잘 정의 된다면, search 연산을 대상으로 일반적으로 상수 시간의 시간 복잡도를 갖는다. 그러나 key 를 대상으로 iterate 시 차이점이 있는데,map 은 key 가 정렬 조건 상 앞서는 것 순서대로 조회 할 수 있지만,unordered_map 은 그렇지 않다. (그래서 unordered_map 인 듯.)또, 경우에 따라서, unordered_map 이 map 보다 더 많은 메모리를 사용 할 수 있다. [2. 예제]#include #include #include #include co.. chrono 타이머 [1. 개요]C++ 애플리케이션 작성 시, 여러가지 타이머 관련 예제 정리[2. 예제] set vs multiset [1. 개요] [2. 예제]#include #include int main(){ std::set s; std::multiset ms; for (int i=1; i 출력1 1 1 2 1 2 3 1 3 4 1 4 5 1 5 6 1 6 7 1 7 8 1 8 9 1 9 10 1 10 1 2 3 4 5 6 7 8 9 10 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 6 6 6 6 6 6 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 => priority_queue https://testkernelv2.tistory.com/315 이전 1 다음