ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C++ STL] algorithm.h
    C++ STL 2023. 3. 31. 22:49

    원소를 수정하지 않는 작업들

     

    for_each

    Windows에서 이거 쓰지말라고 한다

    짧게 쓰고 싶으면 이렇게 쓰라네 

     

    vector<int> x(10);
    
    for( int y : x ){ cout << x << "\n"; }
    
    for( int &y : x){ y = 1; }
    
    for( auto &y : x ){ y = 10; }

     

    find O(N)

    왜 O(logN)이 아닌지 물어보았다

    find_if

    count O(N)


    순열

     

    next_permutation

    prev_permutation


    원소를 수정하는 작업들

    swap

    transform O(N)

     

    replace

    fill

    remove

    reverse

    rotate


    파티션

    특정 조건을 만족하는 원소들은 앞으로 보내고 나머지들은 뒤로 보내는 작업을 말합니다.

    partition


    정렬

    1. sort  O(N*logN)

    // 사용예시
    sort(vec.begin(),vec.end(),compare);

     

    true 일때 첫번째 인자를 우선이라 판단한다

    즉 첫번째 인자를 두번째 인자보다 앞에 배치한다

     

    bool compare(int a, int b) {
        return a > b;
    }
    
    ssort(myVector.begin(), myVector.end(), compare);

    즉, 이거는 a가 더 크면 true 이고 앞에 배치하므로 

    이건 내림차순 정렬인거다.

     

    내부적으로는 퀵소트로 구현되어 있다

    사실 퀵소트 최악의 경우가 O(N^2)인데

    이걸 팀소트인가 뭐랑 합체해서 구현한거라 N*LOGN 으로나온다


    이진탐색

     

    lower_bound O(logN)

    upper_bound O(N*logN)

    binary_search O(logN)

    이진탐색(이분탐색)

    범위를 1/2 절반으로 줄여가며 탐색하는 O(logN) 의 탐색 방법

    vector deque list set map 등 선형자료구조가 아닌 자료구조에도 적용가능하다

    반드시 해당 자료구조가 정렬상태여야한다!

     


    병합

    merge


    집합 관련 함수

    includes

    set_union

    set_intersection

    set_difference


    HEAP 관련

    push_heap

    pop_heap

    make_heap

    sort_heap

    is_heap


    최대최소

    min

    max

    min_element

    max_element

    'C++ STL' 카테고리의 다른 글

    [C++ STL] bitset  (0) 2023.07.07
    [C++ STL] STL 전체  (0) 2023.05.14
    [C++ STL] unordered_map  (2) 2023.03.31
    [C++ STL] sstream  (0) 2023.03.07
    [C++ STL] string  (0) 2023.03.07