C++에서 배열 비교

Jinku Hu 2023년10월12일
  1. for 루프 문을 사용하여 C++에서 배열 비교
  2. 사용자 정의 함수를 사용하여 C++에서 배열 비교
  3. std::equal 알고리즘을 사용하여 C++에서 배열 비교
C++에서 배열 비교

이 기사에서는 C++에서 배열을 비교하는 여러 방법을 보여줍니다.

for 루프 문을 사용하여 C++에서 배열 비교

이 예제에서는 가변 배열 컨테이너 인std::vector를 사용합니다. 이 클래스에는 주어진 두 벡터의 내용을 비교하는 데 사용할 수있는 내장 연산자==가 있습니다. 이 경우 내부적으로 메서드에 의해 처리되기 때문에 다른 벡터 길이에 대해 걱정할 필요가 없습니다. 반환 값은 true와 함께 부울이며 두 벡터가 같음을 의미합니다.

우리는? :조건문을 작성하고 해당 문자열 메시지를 콘솔에 출력합니다.

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<int> i_vec1 = {12, 32, 43, 53, 23, 65};
  vector<int> i_vec2 = {12, 32, 43, 53, 23, 25};
  vector<int> i_vec3 = {12, 32, 43, 53, 23, 65};

  i_vec1 == i_vec2
      ? cout << "Vectors i_vec1 and i_vec2 are the same" << endl
      : cout << "Vectors i_vec1 and i_vec2 are not the same" << endl;

  i_vec1 == i_vec3
      ? cout << "Vectors i_vec1 and i_vec3 are the same" << endl
      : cout << "Vectors i_vec1 and i_vec3 are not the same" << endl;

  return EXIT_SUCCESS;
}

출력:

Vectors i_vec1 and i_vec2 are not the same
Vectors i_vec1 and i_vec3 are the same

사용자 정의 함수를 사용하여 C++에서 배열 비교

이전 방법은 사용자의 템플릿 함수에서 일반화 할 수 있으며 필요한 경우 사용자 지정 반환 코드 및 예외 처리를 추가 할 수 있습니다. 이 예에서 우리는 두 개의vector 참조를 취하고if 구조를 사용하여 동등 조건을 평가하는compareVectorContents 함수를 구현했습니다.

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

template <typename T>
bool compareVectorContents(vector<T> &vec1, vector<T> &vec2) {
  if (vec1 == vec2) {
    return true;
  } else {
    return false;
  }
}

int main() {
  vector<int> i_vec1 = {12, 32, 43, 53, 23, 65};
  vector<int> i_vec3 = {12, 32, 43, 53, 23, 65};
  vector<int> i_vec4 = {12, 32, 43};

  compareVectorContents(i_vec1, i_vec3)
      ? cout << "Vectors i_vec1 and i_vec3 are the same" << endl
      : cout << "Vectors i_vec1 and i_vec3 are not the same" << endl;

  compareVectorContents(i_vec1, i_vec4)
      ? cout << "Vectors i_vec1 and i_vec4 are the same" << endl
      : cout << "Vectors i_vec1 and i_vec4 are not the same" << endl;

  return EXIT_SUCCESS;
}
Vectors i_vec1 and i_vec3 are the same
Vectors i_vec1 and i_vec4 are not the same

std::equal 알고리즘을 사용하여 C++에서 배열 비교

벡터의 내용을 비교하는 또 다른 방법은<algorithm>헤더 파일에 정의 된 C++ 표준 라이브러리의std::equal 알고리즘입니다. equal메소드는 비교해야하는 2 개의 개별 범위를 나타내는 4 개의 매개 변수를 사용하므로 비교를 처리하기위한보다 일반적인 인터페이스를 제공합니다. 이 메서드는 순서가 지정되지 않은 컨테이너의 반복자로 구성된 범위, 즉std::unordered_set,std::unordered_map 등에서 사용할 수 있습니다.equal 반환 값은 부울이고 요소가 같으면true를 반환합니다. 두 가지 범위에서. 또한 전달 된 범위의 길이가 다른 경우 함수는 false를 반환합니다.

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

using std::cin;
using std::cout;
using std::endl;
using std::equal;
using std::string;
using std::vector;

int main() {
  vector<int> i_vec1 = {12, 32, 43, 53, 23, 65};
  vector<int> i_vec2 = {12, 32, 43, 53, 23, 65};
  vector<int> i_vec3 = {12, 32, 43};

  equal(i_vec1.begin(), i_vec1.end(), i_vec2.begin(), i_vec2.end())
      ? cout << "Vectors i_vec1 and i_vec2 are the same" << endl
      : cout << "Vectors i_vec1 and i_vec2 are not the same" << endl;
  equal(i_vec1.begin(), i_vec1.end(), i_vec3.begin(), i_vec3.end())
      ? cout << "Vectors i_vec1 and i_vec3 are the same" << endl
      : cout << "Vectors i_vec1 and i_vec3 are not the same" << endl;

  return EXIT_SUCCESS;
}

출력:

Vectors i_vec1 and i_vec2 are the same
Vectors i_vec1 and i_vec3 are not the same
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

관련 문장 - C++ Array