Какой самый быстрый способ реализовать вычитание массива? Например:
array a1 = [1, 3, 4, 5, 8];
array a2 = [2, 4, 5];
array a3 = a1 - a2; /* [1, 3, 8] */
Здесь массив
будет типом, который моя программа использует для представления структуры, которая используется как контейнер. Остальное - это псевдокод, конечно, я не создаю такие массивы и не вычитаю.
Самым простым решением, которое я могу придумать, являются вложенные циклы:
/* a1 - a2 */
for (i = 0; i < a1.size; ++i) {
int is_the_same = 0;
for (j = 0; i < a2.size; ++j)
if (a1[i] == a2[j]) {
is_the_same = 1;
break;
}
}
if (!is_the_same)
a3.push a1[i];
}
Но это не выглядит очень эффективным. Каким будет другой подход?