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
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