Если я правильно понимаю, вопрос:
Как мне синхронизировать 2 структуры данных, если я сортирую одну из них?
Текущий статус:
sort()
{
...
swap(a,b);
...
}
, что, конечно, не касается второй структуры данных, что приводит к потере синхронизации.
Я бы использовал следующий алгоритм для их синхронизации:
sort()
{
...
swap(*pa, *pb);
swap( pa, pb);
...
}
Разница между ними заключается в добавлении еще одной строки кода для обработки второй структуры данных.