template <class InputIterator, class T>
InputIterator find(InputIterator first, InputIterator last, const T& val);
범위 안에 원하는 값을 찾는 함수입니다.
범위 안 (first 부터 last 전 까지) 의 원소들 중 val 과 일치하는 첫 번째 원소를 가리키는 반복자를 리턴합니다.
만일 일치하는 원소를 찾지 못할 경우 last 를 리턴합니다.
이 함수는 원소를 비교할 때 operator== 을 사용합니다.
참고로 이 함수는 string 의 find 함수와 다릅니다.
인자
- first, last : 원소들의 시작과 끝을 가리키는 반복자들. 이 때 확인하는 범위는 [first, last) 로 정의됩니다. first 가 가리키는 원소는 포함되지만 last 가 가리키는 원소는 포함되지 않습니다.
- val : 비교할 값. 이 때 val 의 타입 T 의 경우 operator== 가 정의되어 있어야만 합니다.
리턴값
첫 번째로 일치하는 원소를 가리키는 반복자. 일치하는 원소가 없을 경우 last 가 리턴됩니다.
위 사이트에 친절하게도 실행 예제까지 써있다.
// find example
#include <algorithm> // std::find
#include <iostream> // std::cout
#include <vector> // std::vector
int main() {
// using std::find with array and pointer:
int myints[] = {10, 20, 30, 40};
int* p;
p = std::find(myints, myints + 4, 30);
if (p != myints + 4)
std::cout << "Element found in myints: " << *p << '\n';
else
std::cout << "Element not found in myints\n";
// using std::find with vector and iterator:
std::vector<int> myvector(myints, myints + 4);
std::vector<int>::iterator it;
it = find(myvector.begin(), myvector.end(), 30);
if (it != myvector.end())
std::cout << "Element found in myvector: " << *it << '\n';
else
std::cout << "Element not found in myvector\n";
return 0;
}
실행 결과는
Element found in myints: 30
Element found in myvector: 30
여기서 궁금증은 이 함수로 문자도 찾을 수 있을까? 이다.
- 1번 방법
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
int main() {
int Size = 3;
string data[] = {"딸기","바나나","사과"};
vector<string>name_list(&data[0], &data[Size]);
vector<string>::iterator it;
it = find(name_list.begin(), name_list.end(), "딸기");
if(it != name_list.end()){
cout << "있어용"<< endl;
}else{
cout << "없어용"<< endl;
}
return 0;
}
만약 vector에 들어있는 원소가 아닌 것을 넣으면?
오옹 아주 가볍게 된다!
- 2번 방법
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
int main() {
string data = "딸기";
vector<string>name_list({"딸기","바나나","사과"});
if(find(name_list.begin(), name_list.end(), data) != name_list.end()){
cout << "있어용"<< endl;
}else{
cout << "없어용"<< endl;
}
return 0;
}
'OLD_알고리즘' 카테고리의 다른 글
C++ 레퍼런스 - std::array (안전한 배열) (0) | 2020.09.22 |
---|---|
DP(Dynamic Programming) (0) | 2020.08.02 |
C++ 표준 입출력 함수 비교 ] cin & cin.get() & cin.getline() (0) | 2020.07.11 |
[알고리즘 기초] 시간, 공간복잡도와 알고리즘에 대한 기초 설명 (0) | 2020.01.03 |
알고리즘 공부 참고 사이트 (0) | 2019.12.24 |
댓글