Как эффективно сравнить векторы с C ++?
Мне нужен совет по микрооптимизации в C ++ для функции сравнения векторов, она сравнивает два вектора на равенство и порядок элементов не имеет значения.
template <class T>
static bool compareVectors(const vector<T> &a, const vector<T> &b)
{
int n = a.size();
std::vector<bool> free(n, true);
for (int i = 0; i < n; i++) {
bool matchFound = false;
for (int j = 0; j < n; j++) {
if (free[j] && a[i] == b[j]) {
matchFound = true;
free[j] = false;
break;
}
}
if (!matchFound) return false;
}
return true;
}
Эта функция интенсивно используется, и я думаю о возможном способе ее оптимизации. Можете ли вы дать мне несколько предложений? Кстати я использую C ++ 11.
Спасибо