목록STL (13)
승쨩개발공부
1.Find O(n)컨테이너 에서 원하는 값을 탐색하는 함수 2.Count O(n)컨테이너 에서 특정 값이 나타나는 횟수를 세는 함수 3.Sort O(NlogN)컨테이너를 정렬하는 함수 1) 오름차순 2)내림차순 (역방향 반복자 사용) 4.next_premutation() 순열 O(N*N!)순열 생성 함수 (가능한 모든 순열을 출력하려면 사전순으로 정렬되어있어야함)do 처음은 그냥 실행되고 while문에 next_permutation에서 다음 순열로 정렬해주기떄문순열이있음 true 없음 false를 반환함 5.Unique 중복삭제 O(n)컨테이너 내 중복되는 원소들을 뒤로 밀어내고 중복되지 않은 원소들만 남겨 새로운 범위의 끝반복자를 반환한다. 6.binary_searc..
보통 컨테이너를 순회해야할떄 두가지 방법이 있는데하나는 begin과 end를 받아와서 사용하는 for문두번쨰는 범위기반 for문이다 첫번쨰방법은 복사비용이 들긴하지만 매우 가벼워 무시할 수 있는 수준이고두번쨰방법은 const와 참조를 통해 안전하고 복사비용이 안 들어가고 코드도 깔끔하다 나는 2번쨰방법을 자주 사용할 것 같다.
정렬되지 않은 셋과 맵기본적으로 STL의 셋과 맵은 내부구조가 이진 탐색 트리이기 떄문에 정렬 상태를 유지한다.하지만 자동으로 정렬되는 것이 무조건 좋은 것만은 아니다. 굳이 정렬할 필요가 없는 데이터인데정렬을 하면 굳이 연산을 더 하게 되는것이다.Unordered 의 사전적 뜻은 정렬되지 않은 이다 기본 Set과 Map은 이진 탐색 트리였지만 Unodred_Set과 Unodred_Map은 해시 기반이기에데이터를 자동으로 정렬하지 않는다기본 Set과 Map의 삽입,삭제,탐색의 시간복잡도가 O(logn)인 반면Unodred_Set과 Unodred_Map은 O(1) 이다 Set 과 Unordred_Set의 차이 실행결과
셋(Set) Set은 중복을 허용하지않고 저장된 데이터를 자동으로 정렬하는 컨테이너다.집합이라고도 표현하기도 한다. Set을 사용하려면 #include으로 헤더를 포함해야한다 셋은 맵(map)과 같이 내부적으로 균형 이진트리로 이루어져있다 배열처럼 작은 원소부터 메모리에 순차적으로 저장된다는게 아니라 트리 구조를 통해 정렬 상태를 유지한다 코드. 컨테이너 내부 실행결과 셋(Set) 에서 원소 탐색find() 메소드 활용셋의 크기가 N일떄 시간복잡도는 O(logN)
std::vector push_back 멤버 함수 push_back은 vector의 끝에 요소를 추가할떄 사용하는 함수 std:vector emplace_back C+11 부터 추가된 멤버함수 push_back과 같이 vector의 요소 끝에 원소를 추가하는 함수. push_back/emplace_back 차이점 두 함수의 가장 큰 차이점은, push_back과 같은 삽입 함수들은 삽입할 객체를 받지만 emplace_back과 같은 생성 삽입 함수는 삽입할 객체의 생성자를 위한 인자들을 받아 std::vetor 내에서 직접 객체를 생성하여 삽입하므로 임시 객체의 생성과 파괴, 복사를 하지 않아도 되서 성능상 더 유리하다.
map -> map의 원소는 key와 value를 한 쌍으로 가진다. -> 각 원소들은 삽입 시에 key값에 따라 자동 정렬이 발생한다.(순회 가능) -> 노드 기반 컨테이너들 중 유일하게 key값을 통한 임의 접근이 가능하다. -> 리소스 탐색용으로 많이 사용된다. -> 단, 중복된 key값은 허용하지 않는다. map 선언 map 사용 -> map은 key와 value를 한 쌍으로 가진 컨테이너이다. -> key로 사용할 자료형과 value로 사용할 자료형을 안에 명시해주면 된다. -> 명시한 순서대로 key와 value의 타입이 결정된다. map의 원소 삽입 map은 원소 삽입 시 key 값에 따라 자동 정렬이 발생한다. -> 자동 정렬이 발생하기 떄문에 앞,뒤 원소 삽입의 의미가 없으므로 push ..