문제풀이(Problem Solving)/C++ 문제풀이에 유용한 것들

컨테이너에서 특정 값 찾기 find()

게임이 더 좋아 2021. 6. 7. 16:55
반응형
728x170

 

<algorithm>라이브러리의 find가 있음

 

iterator를 인수로 받는다.

 

다만 find는 왼쪽부터 최초 원소만 찾고

find_if는 조건에 만족하는 모든 원소 찾음

 

#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;

bool isOdd(int n) {
    return n % 2 == 1;
}

int main() {
    vector<int> v;
    v.push_back(1);
    v.push_back(2);
    v.push_back(3);
    v.push_back(4);
    v.push_back(3);
    v.push_back(6);

    cout << "현재 vector : ";
    for (int i : v) cout << i << " ";

    cout << "\n";


    int num = 3;

    //가장 먼저 출현하는 것만 찾음.
    auto it = find(v.begin(), v.end(), num);
    if (it == v.end()) {
        cout << num << "X \n";
    }
    else {
        cout << num << " 다음 위치에 존재  " << it - v.begin() << "\n";
    }
    cout << "\n==============================\n";


    // 조건 만족하는 원소 다 찾음
    auto it2 = find_if(v.begin(), v.end(), isOdd);
    while (it2 != v.end()) {
        cout << *it2 << "\n";
        it2 = find_if(it2 + 1, v.end(), isOdd);
    }

    return 0;
}

 

 

이렇게 나옴

 

728x90
반응형
그리드형