比较两个std::vector /数组或者一般的两个stl容器可以使用以下方法:
template
bool compareContainers(const T& container1, const T& container2) {
if (container1.size() != container2.size()) {
return false;
}
auto it1 = container1.begin();
auto it2 = container2.begin();
while (it1 != container1.end() && it2 != container2.end()) {
if (*it1 != *it2) {
return false;
}
++it1;
++it2;
}
return true;
}
template
bool compareContainers(const T& container1, const T& container2) {
if (container1.size() != container2.size()) {
return false;
}
return std::equal(container1.begin(), container1.end(), container2.begin());
}
template
bool compareContainers(const T& container1, const T& container2) {
if (container1.size() != container2.size()) {
return false;
}
return std::memcmp(container1.data(), container2.data(), container1.size() * sizeof(typename T::value_type)) == 0;
}
使用示例:
#include
#include
#include
#include
template
bool compareContainers(const T& container1, const T& container2) {
if (container1.size() != container2.size()) {
return false;
}
return std::equal(container1.begin(), container1.end(), container2.begin());
}
int main() {
std::vector vec1 = {1, 2, 3, 4, 5};
std::vector vec2 = {1, 2, 3, 4, 5};
std::vector vec3 = {1, 2, 3, 4, 6};
if (compareContainers(vec1, vec2)) {
std::cout << "vec1 and vec2 are equal" << std::endl;
} else {
std::cout << "vec1 and vec2 are not equal" << std::endl;
}
if (compareContainers(vec1, vec3)) {
std::cout << "vec1 and vec3 are equal" << std::endl;
} else {
std::cout << "vec1 and vec3 are not equal" << std::endl;
}
return 0;
}
输出结果:
vec1 and vec2 are equal
vec1 and vec3 are not equal
上一篇:比较两个sql列
下一篇:比较两个算法的时间复杂度