Как получить массив результатов из разных потоков?
Такой вопрос . Как получить массив результатов из разных потоков?
#include <thread>
#include <future>
#include <iostream>
using namespace std;
int Matrix_NxN(int** array, int col);
void matrixUpdate(int** mass, int** mass2, int i, int j, int col);
auto funk(int** array, int col);
int main(){
system("chcp 1251");
system("cls");
int col, result, n;
int** mass, int** p;
cout << "Размер матрицы ";
cin >> col;
mass = new int* [col];
for (int i = 0; i < col; i++) {
mass[i] = new int[col];
for (int j = 0; j < col; j++) {
mass[i][j] = rand() % 50 + 1;
}
}
p = new int* [col];
for (int i = 0; i < col; i++)
p[i] = new int[col];
n = col - 1;
for (int i = 0; i < col; i++) {
matrixUpdate(mass, p, i, 0, col);
result = funk(p, n);
}
//cout << "Определитель равен " << result;
//cin.get();
return 0;
}
auto funk(int** array, int col) {
for (int i = 0; i < col; i++) {
auto res = async(launch::async, [array, col]{
Matrix_NxN(array,col);
});
return res;
}
}
int Matrix_NxN(int** array, int col) {
int i = 0, j = 0, d = 0, k = 1, n = col - 1;
int** pArray;
pArray = new int* [col];
for (int i = 0; i < col; i++)
pArray[i] = new int[col];
n = col - 1;
if (col < 1)
cout << "Определителя нет!";
else if (col == 1){
d = array[0][0];
return (d);
}
else if (col == 2){
d = array[0][0] * array[1][1] - (array[1][0] * array[0][1]);
return (d);
}
else{
for (i = 0; i < col; i++){
matrixUpdate(array, pArray, i, 0, col);
d = d + k * array[i][0] * Matrix_NxN(pArray, n);
k = -k;
}
}
return (d);
}
void matrixUpdate(int** mass, int** mass2, int i, int j, int col){
int c1, c2, num1 = 0, num2;
for (c1 = 0; c1 < col - 1; c1++){
if (c1 == i)
num1 = 1;
num2 = 0;
for (c2 = 0; c2 < col - 1; c2++){
if (c2 == j)
num2 = 1;
mass2[c1][c2] = mass[c1 + num1][c2 + num2];
}
}
}