C++에서 배열에 요소가 포함되어 있는지 확인

Shikha Chaudhary 2023년10월12일 C++ C++ Array
  1. 루프를 사용하여 C++에서 배열에 요소가 포함되어 있는지 확인
  2. std::find를 사용하여 C++에서 배열에 요소가 포함되어 있는지 확인
  3. Std::Count를 사용하여 C++에서 배열에 요소가 포함되어 있는지 확인
  4. std::binary_search를 사용하여 C++에서 배열에 요소가 포함되어 있는지 확인
  5. any_of() 함수를 사용하여 C++에서 배열에 요소가 포함되어 있는지 확인
  6. 결론
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 함수를 사용하여 배열에서 요소를 검색하는 코드입니다. 여기에서 부울 변수 presentstd::find 함수를 사용하여 points 배열을 반복합니다.

std::find 함수는 세 개의 인수를 취합니다.

  1. 배열의 초기 위치에 대한 반복자 역할을 하는 변수 points
  2. 배열의 마지막 위치에 대한 반복자 역할을 하는 표현식 points+x
  3. 검색할 값인 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

이 함수에 필요한 인수를 전달하고 결과를 인쇄하는 방법을 확인하십시오. key56points 배열의 두 위치에 있으므로 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::countstd::binary_search와 같은 알고리즘과 함께 작동하는 방법을 보았습니다.

그러나 이러한 모든 방법은 동일한 목표를 달성합니다. 원하는 최상의 접근 방식을 결정하는 것은 전적으로 귀하에게 달려 있습니다.

튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다

관련 문장 - C++ Array