У нас есть два вектора размера, которые зависят от времени выполнения, и нам нужно проверить, равны ли они - элементы различаются только после окончания вектора меньшего размера. Я использовал std :: equal, но проблема в том, что мне нужно сначала найти какой вектор имеет меньший размер, что приводит к дополнительной строке кода:
#include <vector>
#include <iostream>
int main()
{
std::vector<int> a(1000, 3);
std::vector<int> a1(100, 3);
if(a.size() > a1.size())
{
if(std::equal(a1.begin(), a1.end(), a.begin()))
{
std::cout << "Same a gt a1" << std::endl;
}
}
if(a1.size() > a.size())
{
if(std::equal(a.begin(), a.end(), a1.begin()))
{
std::cout << "Same a1 gt a" << std::endl;
}
}
if(a1.size() == a.size())
{
if(std::equal(a.begin(), a.end(), a1.begin()))
{
std::cout << "Same a = a1" << std::endl;
}
}
}
Может ли быть улучшен код для сравнения двух векторов или отличаться только в конце меньшего вектора?