|
두 벡터가 완전히 동일하면 true를
리턴하는 operator==()가 있습니다.
그런데, 선언 방법이 틀렸네요.
민인학 님이 쓰신 글 :
: 예로
:
: struct {
: int a;
: int b;
: } test1;
:
: struct {
: int a;
: int b;
: } test2;
C++에서는 이런 식의 구조체 선언은 좋지 않습니다.
struct test_type {
int a;
int b;
test_type(int a1, int b1): a(a1), b(b1) {} // 편의를 위해 만든 생성자
friend bool operator==(test_type& x, test_type y); // operator==가 꼭 정의되어 있어야 합니다.
}; // 이렇게 해야 합니다.
bool operator==(test_type& x, test_type y)
{
return x.a == y.a && x.b == y.b;
}
: vector<test1> a;
: vector<test2> b;
두가지 다른 타입의 벡터는 operator==()로 비교할 수 없습니다.
다음과 같은 경우는 가능합니다.
vector<test_type> v_a, v_b;
v_a.push_back(test_type(1, 2)); // test_type의 임시 객체가 생성된 후,
v_a.push_back(test_type(3, 4)); // 벡터에 추가됩니다.
v_b.push_back(test_type(1, 2));
v_b.push_back(test_type(3, 4));
if (v_a == v_b) // 가능한 공백을 두어서 보기 좋게 해주세요.
ShowMessage("두 벡터가 동일합니다.");
else
ShowMessage("두 벡터가 동일하지 않습니다.");
|