[C++] find() 함수로 특정 값 탐색

Doorbals·2023년 1월 7일
0

CPP

목록 보기
7/16

1. <algorithm> find()

#include <algorithm>
find(begin, end, value);
  • 일련의 자료구조(Array, vector 등)에서 원하는 값을 탐색하는 함수
  • begin과 end는 iterator 객체가 와야 한다.
  • 범위 내(begin - end)의 원소들 중에서 value와 일치하는 첫번째 원소의 iterator를 리턴한다.
  • 범위 내에 찾고자 하는 값이 없다면 end를 반환한다.

🖥️ 예제 코드

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main()
{
    vector<int> v = { 1, 2, 3, 4, 5 };

    cout << "Index of 3 : " << find(v.begin(), v.end(), 3) - v.begin() << endl;
    cout << "Index of 6 : " << find(v.begin(), v.end(), 6) - v.begin();
}
  • iterator끼리 빼면 두 iterator 사이의 거리(distance)를 반환 == 찾는 원소의 인덱스
    => 따라서 3의 iterator - v.begin() = 2
  • v.end()는 v의 마지막 원소 다음 iterator이기 때문에 그 인덱스는 v의 마지막 인덱스 + 1이다.
    => 6은 범위에 없는 값이라 v.end()를 반환하므로 v.end() - v.begin() = 5 (== v의 사이즈)

✔️ 출력 결과


2. <string> string.find()

#include <string>
string str;
str.find(value);
  • 문자열 내에서 value 값을 찾는다.
  • 문자열 내에 value와 일치하는 값이 있다면 value의 첫번째 인덱스를 반환한다.
  • 일치하는 값이 없다면 string::npos(== 쓰레기 값)를 반환한다.

🖥️ 예제 코드

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string str = "Hello";

    cout << str.find("H") << endl;
    cout << str.find("A");
}

✔️ 출력 결과

profile
게임 클라이언트 개발자 지망생의 TIL

0개의 댓글