C++에서 배열에 요소가 포함되어 있는지 확인
- 루프를 사용하여 C++에서 배열에 요소가 포함되어 있는지 확인
-
std::find
를 사용하여 C++에서 배열에 요소가 포함되어 있는지 확인 -
Std::Count
를 사용하여 C++에서 배열에 요소가 포함되어 있는지 확인 -
std::binary_search
를 사용하여 C++에서 배열에 요소가 포함되어 있는지 확인 -
any_of()
함수를 사용하여 C++에서 배열에 요소가 포함되어 있는지 확인 - 결론
C++에서 배열로 작업하는 동안 배열에 C++의 요소가 포함되어 있는지 확인해야 할 수도 있습니다. 이것은 단순히 루프를 사용하여 수행할 수 있지만 다른 효율적인 방법도 동일하게 수행할 수 있습니다.
이 기사에서는 C++에서 배열에 요소가 있는지 확인하는 다양한 방법을 안내합니다. 읽어.
C++의 표준 라이브러리는 배열에 C++의 요소가 포함되어 있는지 확인하는 데 사용할 수 있는 몇 가지 알고리즘과 함수를 제공합니다. 그러나 먼저 루프를 사용하여 이를 수행하는 방법을 살펴보겠습니다.
루프를 사용하여 C++에서 배열에 요소가 포함되어 있는지 확인
for
루프를 사용하여 매우 간단하게 유지할 수 있습니다. 여기 아래 코드에서 points
라는 배열과 key
라는 이름을 검색해야 하는 요소가 있습니다.
main
블록 내에서 for
루프를 사용하여 모든 요소를 선형으로 탐색합니다. 각 반복에서 현재 요소가 찾고 있는 요소와 동일한지 확인합니다.
key
요소가 발견되면 루프가 중단되고 부울 변수 present
의 값이 false
로 업데이트됩니다. 나중에 이 변수 present
의 값을 기반으로 원하는 출력을 인쇄합니다.
예제 코드:
#include <algorithm>
#include <iostream>
using namespace std;
int main() {
int points[] = {23, 45, 56, 12, 34, 56};
int key = 56;
bool present = false;
for (int i : points) {
if (i == key) {
present = true;
break;
}
}
if (present) {
cout << "The element is present";
} else {
cout << "The elment is not present";
return 0;
}
출력:
The element is present
이것이 배열에서 요소를 검색하는 가장 쉬운 방법이지만 더 나은 다른 방법도 있습니다. 다음 섹션에서 이에 대해 논의할 것입니다.
std::find
를 사용하여 C++에서 배열에 요소가 포함되어 있는지 확인
std::find
기능은 주로 특정 범위의 요소를 검색하는 데 사용됩니다. 이 기능은 [first, last)
범위에서 필요한 요소를 검색합니다.
통사론:
InputIterator find(InputIterator first, InputIterator last, const T& val);
다음은 std::find
함수를 사용하여 배열에서 요소를 검색하는 코드입니다. 여기에서 부울 변수 present
와 std::find
함수를 사용하여 points
배열을 반복합니다.
std::find
함수는 세 개의 인수를 취합니다.
- 배열의 초기 위치에 대한 반복자 역할을 하는 변수
points
- 배열의 마지막 위치에 대한 반복자 역할을 하는 표현식
points+x
- 검색할 값인
key
변수
값을 찾을 수 없는 경우 이 함수는 배열의 끝으로 반복자를 반환하지만 present
변수 값을 기반으로 원하는 명령문을 인쇄할 수 있습니다.
예제 코드:
#include <algorithm>
#include <iostream>
using namespace std;
int main() {
int points[] = {23, 45, 56, 12, 34, 56};
int key = 56;
int x = sizeof(points) / sizeof(*points);
bool present = std::find(points, points + x, key) != points + x;
if (present) {
cout << "The element is present";
} else {
cout << "The element is not present";
}
return 0;
}
출력:
The element is present
위에서 언급한 인수를 전달하는 것이 혼란스럽다면 begin()
및 end()
함수를 각각 사용하여 배열의 시작과 끝에 두 개의 반복자를 전달할 수도 있습니다.
예제 코드:
#include <algorithm>
#include <iostream>
using namespace std;
int main() {
int points[] = {23, 45, 56, 12, 34, 56};
int key = 56;
bool present = std::find(begin(points), end(points), key) != end(points);
if (present) {
cout << "The element is present";
} else {
cout << "The element is not present";
}
return 0;
}
출력:
The element is present
begin()
및 end()
함수를 직접 사용하여 코드를 단순화하는 방법을 확인하십시오. 이전 코드의 인수처럼 작동합니다.
Std::Count
를 사용하여 C++에서 배열에 요소가 포함되어 있는지 확인
또 다른 방법은 std::count
알고리즘을 사용하는 것입니다. 기본적으로 이 알고리즘은 주어진 범위에서 요소가 보이는 횟수를 계산합니다.
반환된 개수의 값이 0이 아니면 배열에 요소가 있음을 의미합니다. std::count
알고리즘은 [first, last)
범위 사이의 요소 발생 횟수도 계산합니다.
통사론:
int counter(Iterator first, Iterator last, T &val)
코드를 보고 어떻게 작동하는지 이해하십시오.
#include <algorithm>
#include <iostream>
using namespace std;
int main() {
int points[] = {23, 45, 56, 12, 34, 56};
int key = 56;
cout << std::count(begin(points), end(points), key);
}
출력:
2
이 함수에 필요한 인수를 전달하고 결과를 인쇄하는 방법을 확인하십시오. key
값 56
은 points
배열의 두 위치에 있으므로 2
로 출력됩니다.
이제 이것을 부울 변수 present
와 병합하여 key
변수의 개수가 0보다 큰지 여부를 확인합니다. 그렇다면 단순히 요소가 배열에 있음을 의미합니다.
#include <algorithm>
#include <iostream>
using namespace std;
int main() {
int points[] = {23, 45, 56, 12, 34, 56};
int key = 56;
bool present = std::count(begin(points), end(points), key) > 0;
if (present) {
cout << "The element is present";
} else {
cout << "The element is not present";
}
return 0;
}
출력:
The element is present
당연히 이 알고리즘은 요소 개수를 찾기 위해 전체 배열을 탐색하기 때문에 std::find
보다 성능이 느립니다.
std::binary_search
를 사용하여 C++에서 배열에 요소가 포함되어 있는지 확인
배열이 정렬된 경우 C++에서 배열에 요소가 포함되어 있는지 확인하는 가장 효율적인 방법은 이진 검색 알고리즘을 사용하는 것입니다. C++의 표준 라이브러리는 동일한 작업을 위한 binary_search
알고리즘을 제공합니다.
std::binary_search
알고리즘은 요소가 [first, last)
범위에 있는 경우 true
값을 반환합니다. 그렇지 않으면 거짓
을 반환합니다.
아래 코드에서 checkEle()
라는 함수를 만들었습니다. 이 함수는 먼저 sort()
함수를 사용하여 배열을 정렬한 다음 std::binary_search
알고리즘을 사용하여 key
요소를 검색합니다. .
예제 코드:
#include <algorithm>
#include <iostream>
using namespace std;
bool checkEle(int a[], int x, int key) {
if (x <= 0) {
return false;
}
sort(a, a + x);
return std::binary_search(a, a + x, key);
}
int main() {
int points[] = {23, 45, 56, 12, 34, 56};
int key = 56;
int x = sizeof(points) / sizeof(*points);
bool present = checkEle(points, x, key);
if (present) {
cout << "The element is present";
} else {
cout << "The element is not present";
}
return 0;
}
출력:
The element is present
이것은 어레이를 정렬하기 위해 먼저 sort()
함수를 사용하면 시간 복잡도가 훨씬 더 증가하기 때문에 어레이가 이미 정렬된 경우에만 유용합니다.
any_of()
함수를 사용하여 C++에서 배열에 요소가 포함되어 있는지 확인
any_of()
함수를 사용하여 술어가 주어진 범위에 있는 요소를 준수하는지 확인할 수 있습니다. 그렇다면 true
를 반환합니다. 그렇지 않으면 거짓
을 반환합니다.
통사론:
template <class InputIterator, class UnaryPredicate>
bool any_of(InputIterator begin, InputIterator end, UnaryPredicate p);
술어가 어떻게 정의되는지 이해하려면 코드를 보십시오. 여기에서 any_of()
함수를 호출하는 것과 함께 현재 요소가 우리가 찾고 있는 key
와 같은지 동시에 확인하는 and
조건도 사용합니다.
조건이 요소에 대해 충족되면 부울 변수 present
의 값이 true
로 업데이트됩니다.
#include <algorithm>
#include <array>
#include <iostream>
using namespace std;
int main() {
int points[] = {23, 45, 56, 12, 34, 56};
int key = 56;
bool present =
std::any_of(begin(points), end(points), [&](int i) { return i == key; });
if (present) {
cout << "The element is present";
} else {
cout << "The element is not present";
}
return 0;
}
출력:
The element is present
이것이 any_of()
함수가 배열의 요소를 검색하는 방법입니다. 이것은 C++에서 배열의 요소를 검색하는 방법에 관한 것입니다.
결론
이 기사에서는 C++에서 배열에 요소가 포함되어 있는지 확인하는 다양한 접근 방식에 대해 설명했습니다. 우리는 C++에서 간단한 for
루프가 사용되는 방법과 std::find
, std::count
및 std::binary_search
와 같은 알고리즘과 함께 작동하는 방법을 보았습니다.
그러나 이러한 모든 방법은 동일한 목표를 달성합니다. 원하는 최상의 접근 방식을 결정하는 것은 전적으로 귀하에게 달려 있습니다.