dh_0e

[C++] max_element, min_element, find 본문

C++

[C++] max_element, min_element, find

dh_0e 2024. 7. 12. 00:11

max_element, min_element

  • 배열, 벡터, 리스트 등의 최댓값(max_element), 최솟값(min_element)을 찾을 때 사용
  • <algorithm> 라이브러리에 있으며, 최댓값 or 최솟값을 가리키는 반복자를 반환함
  • 시간 복잡도: O(n)
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int main()
{
    vector<int> vec={1, 2, 3, 4, 5, 6};
    printf("vec의 최솟값: %d\n", *min_element(vec.begin(), vec.end())); // 1
    printf("vec의 최댓값의 iterator: %p\n", max_element(vec.begin(), vec.end())); // 27762372(주소값)
    
    return 0;
}

 

  • v.begin()을 빼주면 인덱스  값을 구할 수 있음
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int main()
{
    vector<int> vec={1, 2, 3, 4, 5, 6};
    printf("vec의 최솟값의 index: %d\n", min_element(vec.begin(), vec.end())-vec.begin()); // 0
    printf("vec의 최댓값의 index: %d\n", max_element(vec.begin(), vec.end())-vec.begin()); // 5
	
    return 0;
}

 

find

  • 컨테이너의 요소를 처음부터 끝까지 순회하며, 원하는 값을 찾을 때까지 검색
  • 마찬가지로 <algorithm> 라이브러리에 있으며,  값을 찾으면 해당 값의 반복자를 반환
  • 값이 존재하지 못한다면 범위의 끝을 반환
  • 시간 복잡도: O(n)
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int main()
{
    vector<int> vec={1, 2, 3, 4, 5, 6};
    int target=3;
    
    auto it=find(vec.begin(), vec.end(), target);
    printf("target의 index: %d\n", it-vec.begin()); // 2
    
    target=0;
    it=find(vec.begin(), vec.end(), target);
    printf("target이 없다면 true: %d\n",it==vec.end()); // 1

    return 0;
}

 

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

[C++] stringstream  (2) 2024.07.22
[C++] map, unordered_map  (0) 2024.07.03
[C++] 행렬 곱셈(matrix multiplication) 정의와 그 이유, 구현  (0) 2024.06.25
[C++] stoi/stol/stoll, <string> method  (0) 2024.06.24