Цитата(JackYF @ 27.4.2008, 21:12 ) | | Загрузку/выгрузку из контейнера в твою матрицу - реализовывай как хочешь. |
Можно к примеру использовать QList, QStringList, QMap, QMultiMap, QHash, QMultiHash. В крайнем случае можно использовать многомерные массивы, но это далеко не самый быстрый способ. Вот пример умножения квадратных матриц размерности 4х4 с использованием QHash:
| Код | //При умножении матриц с использованием хэш-таблиц очень удобно //создавать хэш-таблицы для левой матрицы из строк, //а для правой из столбцов
//матрица A (левый операнд) QHash <int, int> a1; QHash <int, int> a2; QHash <int, int> a3; QHash <int, int> a4; //матрица B (правый операнд) QHash <int, int> b1; QHash <int, int> b2; QHash <int, int> b3; QHash <int, int> b4; //матрица C (результирующая матрица) QHash <int, int> c1; QHash <int, int> c2; QHash <int, int> c3; QHash <int, int> c4; //Здесь считываем матрицы A и B в хэш-таблицы //TODO: int i; for (i = 0; i < 4; i++) { //Первая строка результирующей матрицы c1[i] += (i == 0 ? a1[i]*b1[i] : (i == 1 ? a1[i]*b2[i] : ( i == 2 ? a1[i]*b3[i] : a1[i]*b4[i]))); //Вторая строка результирующей матрицы c2[i] += (i == 0 ? a2[i]*b1[i] : (i == 1 ? a2[i]*b2[i] : ( i == 2 ? a2[i]*b3[i] : a2[i]*b4[i]))); //Третья строка результирующей матрицы c3[i] += (i == 0 ? a3[i]*b1[i] : (i == 1 ? a3[i]*b2[i] : ( i == 2 ? a3[i]*b3[i] : a3[i]*b4[i]))); //Четвёртая строка результирующей матрицы c4[i] += (i == 0 ? a4[i]*b1[i] : (i == 1 ? a4[i]*b2[i] : ( i == 2 ? a4[i]*b3[i] : a4[i]*b4[i]))); }
|
|