Как указывает Оли Чарльзуорт, порядок обхода элементов в ваших матрицах имеет значение, поэтому простое создание параллели для директивы вокруг самого внешнего цикла не будет работать.
Один из вариантов, который у вас есть, - этообменять некоторое пространство на время.Сделайте копию вашего массива T
(назовите его T'
).В итерации 1 вы бы заменили свою строку:
swapTab(t,i,j)
чем-то вроде
T'[j][i] = T[i][j]
(я не очень программист на C ++, поэтому игнорирую дефекты синтаксиса.)
Во второй итерации вам нужно сначала скопировать T'
обратно в T
, а затем продолжить.НЕ ДЕЛАЙТЕ этого - установите указатели (возможно, Tnew
, Told
) на T
и T'
и переключайте указатели так, чтобы Told
всегда указывал на массив для чтения, и Tnew
всегда указывает на массив для записи.