C++98stlbeginner
std::equal
C++98 · The Foundation · Compiler flag: -std=c++98
Explanation
Checks if two ranges are equal.
Real-World Scenario
Verify identical settings in two user profiles.
Quick Snippet
snippet.cpp
std::equal(vec1.begin(), vec1.end(), vec2.begin());Full Example
equal.cpp
// CodeNebula - C++98 Example: equal
// Compile: g++ -std=c++98 -Wall -Wextra -o example equal.cpp
// std::equal checks whether two ranges are element-wise equal.
// Returns true if all corresponding elements match, false otherwise.
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstdlib>
bool abs_equal(int a, int b) {
return std::abs(a) == std::abs(b);
}
int main() {
int arr1[] = {1, 2, 3, 4, 5};
int arr2[] = {1, 2, 3, 4, 5};
int arr3[] = {1, 2, 9, 4, 5};
std::vector<int> v1(arr1, arr1 + 5);
std::vector<int> v2(arr2, arr2 + 5);
std::vector<int> v3(arr3, arr3 + 5);
// Compare equal ranges
bool result = std::equal(v1.begin(), v1.end(), v2.begin());
std::cout << "v1 == v2: " << (result ? "true" : "false") << std::endl;
// Compare different ranges
result = std::equal(v1.begin(), v1.end(), v3.begin());
std::cout << "v1 == v3: " << (result ? "true" : "false") << std::endl;
// Compare with custom predicate (absolute value equality)
int arr4[] = {-1, 2, -3, 4, -5};
std::vector<int> v4(arr4, arr4 + 5);
result = std::equal(v1.begin(), v1.end(), v4.begin(), abs_equal);
std::cout << "v1 abs-equals v4: " << (result ? "true" : "false") << std::endl;
// Compare a sub-range
result = std::equal(v1.begin(), v1.begin() + 2, v3.begin());
std::cout << "First 2 elements equal: " << (result ? "true" : "false") << std::endl;
return 0;
}
// Expected output:
// v1 == v2: true
// v1 == v3: false
// v1 abs-equals v4: true
// First 2 elements equal: true
Run command
g++ -std=c++98 -Wall -Wextra -o example equal.cpp