Условие в операторе if
if(ump.empty())
неверно. Карта не может быть пустой при условии, что переданные массивы не имеют нулевых размеров.
Вместо условия вы можете использовать стандартный алгоритм std::all_of
. Также нет смысла передавать два размера массивов, потому что если они не равны друг другу, то очевидно, что массивы не равны друг другу.
Также параметры массива должны быть указаны с помощьюквалификатор const, потому что они не изменены в функции.
Вот демонстрационная программа, которая показывает, как можно определить функцию.
#include <iostream>
#include <iomanip>
#include <unordered_map>
#include <iterator>
#include <algorithm>
bool SameArray( const int a1[], const int a2[], size_t n )
{
sstd::unordered_map<int, int> m;
for ( const int *p = a1; p != a1 + n; ++p ) ++m[*p];
for ( const int *p = a2; p != a2 + n; ++p ) --m[*p];
return std::all_of( std::begin( m ), std::end( m ),
[]( const auto &p) { return p.second == 0; } );
}
int main()
{
const size_t N = 20;
int a1[N] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
int a2[N] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
std::cout << std::boolalpha << SameArray( a1, a2, N ) << '\n';
return 0;
}
Ее вывод
true