# compare

***

**1. Comparing Strings**

```cpp
#include <iostream>
#include <string>

int main() {
  std::string str1 = "Hello";
  std::string str2 = "World";

  if (str1.compare(str2) == 0) {
    std::cout << "Strings are equal" << std::endl;
  } else {
    std::cout << "Strings are not equal" << std::endl;
  }
  return 0;
}
```

**2. Comparing Integers**

```cpp
#include <iostream>

int main() {
  int num1 = 10;
  int num2 = 20;

  if (num1 == num2) {
    std::cout << "Numbers are equal" << std::endl;
  } else {
    std::cout << "Numbers are not equal" << std::endl;
  }
  return 0;
}
```

**3. Comparing Double Precision Floating-Point Numbers**

```cpp
#include <iostream>

int main() {
  double num1 = 10.5;
  double num2 = 20.5;

  if (num1 == num2) {
    std::cout << "Numbers are equal" << std::endl;
  } else {
    std::cout << "Numbers are not equal" << std::endl;
  }
  return 0;
}
```

**4. Comparing Characters**

```cpp
#include <iostream>

int main() {
  char ch1 = 'a';
  char ch2 = 'b';

  if (ch1 == ch2) {
    std::cout << "Characters are equal" << std::endl;
  } else {
    std::cout << "Characters are not equal" << std::endl;
  }
  return 0;
}
```

**5. Comparing Arrays**

```cpp
#include <iostream>
#include <algorithm>

int main() {
  int arr1[] = {1, 2, 3, 4, 5};
  int arr2[] = {1, 2, 3, 4, 5};

  if (std::equal(std::begin(arr1), std::end(arr1), std::begin(arr2), std::end(arr2))) {
    std::cout << "Arrays are equal" << std::endl;
  } else {
    std::cout << "Arrays are not equal" << std::endl;
  }
  return 0;
}
```

**6. Comparing Vectors**

```cpp
#include <iostream>
#include <vector>

int main() {
  std::vector<int> vec1 = {1, 2, 3, 4, 5};
  std::vector<int> vec2 = {1, 2, 3, 4, 5};

  if (vec1 == vec2) {
    std::cout << "Vectors are equal" << std::endl;
  } else {
    std::cout << "Vectors are not equal" << std::endl;
  }
  return 0;
}
```

**7. Comparing Sets**

```cpp
#include <iostream>
#include <set>

int main() {
  std::set<int> set1 = {1, 2, 3, 4, 5};
  std::set<int> set2 = {1, 2, 3, 4, 5};

  if (set1 == set2) {
    std::cout << "Sets are equal" << std::endl;
  } else {
    std::cout << "Sets are not equal" << std::endl;
  }
  return 0;
}
```

**8. Comparing Maps**

```cpp
#include <iostream>
#include <map>

int main() {
  std::map<int, int> map1 = {{1, 1}, {2, 2}, {3, 3}};
  std::map<int, int> map2 = {{1, 1}, {2, 2}, {3, 3}};

  if (map1 == map2) {
    std::cout << "Maps are equal" << std::endl;
  } else {
    std::cout << "Maps are not equal" << std::endl;
  }
  return 0;
}
```

**9. Comparing Pairs**

```cpp
#include <iostream>
#include <utility>

int main() {
  std::pair<int, int> pair1 = {1, 2};
  std::pair<int, int> pair2 = {1, 2};

  if (pair1 == pair2) {
    std::cout << "Pairs are equal" << std::endl;
  } else {
    std::cout << "Pairs are not equal" << std::endl;
  }
  return 0;
}
```

**10. Comparing Tuples**

```cpp
#include <iostream>
#include <tuple>

int main() {
  std::tuple<int, int, int> tuple1 = {1, 2, 3};
  std::tuple<int, int, int> tuple2 = {1, 2, 3};

  if (tuple1 == tuple2) {
    std::cout << "Tuples are equal" << std::endl;
  } else {
    std::cout << "Tuples are not equal" << std::endl;
  }
  return 0;
}
```

**11. Comparing Objects Using C++11 Forward Declaration**

```cpp
class MyClass {
public:
  int data;
};

bool operator==(const MyClass& lhs, const MyClass& rhs) {
  return lhs.data == rhs.data;
}

int main() {
  MyClass obj1, obj2;
  obj1.data = 10;
  obj2.data = 20;

  if (obj1 == obj2) {
    std::cout << "Objects are equal" << std::endl;
  } else {
    std::cout << "Objects are not equal" << std::endl;
  }
  return 0;
}
```

**12. Comparing Objects Using C++11 Friend Function**
