C++ 일련하는 원소 찾기 Search
Notepad96
·2020. 11. 13. 21:34
300x250
1. search, search_n
search, search_n 함수들은 algorithm 라이브러리의 포함되어 있다.
search는 원소 중 특정 값들이 일렬로 존재하고 있는지, 존재하고 있다면 어느 위치에 존재하는지를 찾아낼 수 있다.
search_n의 경우 지정한 수가 n번 연속으로 존재하는 지를 판별할 수 있다.
2. 코 드
환경 : Visual studio 2019
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int main() {
vector<int> v;
v.push_back(3);
v.push_back(4);
v.push_back(5);
v.push_back(6);
v.push_back(7);
v.push_back(1);
v.push_back(1);
v.push_back(1);
cout << "vector : ";
for (int n : v) {
cout << n << " ";
}
cout << "\nindex : ";
for (int n = 0; n < v.size(); n++) {
cout << n << " ";
}
cout << "\n==========================\n";
vector<int> v2 = { 5, 7 };
cout << "{ ";
for (int n : v2) {
cout << n << " ";
}
cout << "} ";
auto it = search(v.begin(), v.end(), v2.begin(), v2.end());
if (it != v.end()) {
cout << it-v.begin() << "에 위치한다.\n";
}
else {
cout << "는 존재하지 않습니다.\n";
}
cout << "\n==========================\n";
v2 = { 5, 6, 7 };
cout << "{ ";
for (int n : v2) {
cout << n << " ";
}
cout << "} ";
it = search(v.begin(), v.end(), v2.begin(), v2.end());
if (it != v.end()) {
cout << it - v.begin() << "에 위치한다.\n";
}
else {
cout << "는 존재하지 않습니다.\n";
}
cout << "\n==========================\n";
int num1 = 3, num2 = 1;
it = search_n(v.begin(), v.end(), num1, num2);
cout << "{ ";
for (int i = 0; i < num1; i++) {
cout << num2 << " ";
}
cout << "} ";
if (it != v.end()) {
cout << it - v.begin() << "에 위치한다.\n";
}
else {
cout << "는 존재하지 않습니다.\n";
}
return 0;
}
- search 함수는 인자로 (시작 반복자, 끝 반복자, 찾을 원소 시작 반복자, 찾을 원소 끝 반복자) 를 받는다.
- 해당 vector에 5와 7은 존재하지만 일련하여 존재하지는 않는다.
따라서 search 결과 end() 반복자를 반환받어 존재하지 않는다고 출력된다.
- {5, 6, 7}의 경우 vector 내에 일련하여 존재한다.
따라서 해당 위치의 반복자를 얻어 이를 시작 반복자인 begin()을 빼줌으로서 인덱스를 구할 수 있다.
- search_n의 경우 동일한 수가 n번 연속으로 존재하는 위치가 있는지를 탐색할 수 있다.
3. 참 조
300x250
'C++ > STL' 카테고리의 다른 글
C++ vector 범위 초기화 Copy (0) | 2020.11.14 |
---|---|
C++ 동일 원소 포함 여부 확인 is_permutation (0) | 2020.11.14 |
C++ 원소 개수 구하기 Count (0) | 2020.11.13 |
C++ Vector 값 탐색 find - 존재 유무 확인 (0) | 2020.11.12 |
C++ Vector 최대값, 최소값, 인덱스 구하기 (0) | 2020.11.12 |