본문 바로가기

C++/STL

(8)
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